Мы можем сделать это проще, если мы используем summarise_if
из dplyr
library(dplyr)
MyData %>%
summarise_if(is.numeric, mean)
В коде ОП он циклически перебирает все столбцы и просто print
результат и не хранить его. Также возможно, что некоторые столбцы не являются numeric
. В приведенном ниже коде мы предварительно присваиваем vector
('v1') с 0 значениями для хранения вывода. Создайте логическое условие с помощью if/else
и верните mean
, если оно равно numeric
или else
return NA
v1 <- numeric(length(MyData))
for(i in seq_along(MyData)) {
if(is.numeric(MyData[[i]])) {
v1[i] <- mean(MyData[[i]], na.rm = TRUE)
} else {
v1[i] <- NA_real_
}
}
В base R
, это также можно сделатьс sapply
i1 <- sapply(MyData, is.numeric)
sapply(MyData[i1], mean, na.rm = TRUE)
или с colMeans
colMeans(MyData[i], na.rm = TRUE)