При написании R код для идентификации столбцов с числовыми данными, у меня были некоторые проблемы, и нашел этот вопрос на SO: Is there a vectorized way to use is.numeric?is.numeric в применить против sapply
В пределах этой странице я нашел свой ответ, но я озадачен по характеру самой проблемы. На этой странице, следующий код надрез делает то, что я ожидал:
> dat <- data.frame(v1=1:5,v2=letters[1:5],v3=rnorm(5),v4=c(1,2,'c','d',5))
> sapply(dat,is.numeric)
v1 v2 v3 v4
TRUE FALSE TRUE FALSE
Но если я изменю sapply применить, я к тому, что вызвало мою проблему.
> dat <- data.frame(v1=1:5,v2=letters[1:5],v3=rnorm(5),v4=c(1,2,'c','d',5))
> apply(dat,2,is.numeric)
v1 v2 v3 v4
FALSE FALSE FALSE FALSE
Зачем наносить и обрабатывать результаты в разных оценках?
'help (apply)' - * Если 'X' не является массивом, а объектом класса с непустым значением dim (например, фреймом данных), применяйте попытки принуждения его к массиву через' as.matrix', если он двумерный (например, кадр данных) или через 'as.array'. * –
' apply' и 'lapply' - разные функции, поэтому неудивительно, что они дают разные результаты. Имейте в виду полностью понять, что они делают и когда они должны использоваться. – nicola
@RichardScriven - благодарю вас за эту деталь. Я не видел этого в применении - я упустил из виду или не понял его в правильном контексте. Я бы поднял или согласился, что ты ответишь, если сможешь. – KirkDCO