您好,我想为数据中的每个数字列计算均值。现在,我有:
for(i in names(MyData)){
avg <- mean(MyData[[i]], na.rm = TRUE)
print(avg)
}
但是我得到类似主题名称的错误,因为MyData的最后一个是决定性的,我在这里有字符串,有没有办法忽略带有字符串的列。我也知道我可以将其更改为数字,但是我不想这样做。
答案 0 :(得分:0)
如果我们使用summarise_if
中的dplyr
library(dplyr)
MyData %>%
summarise_if(is.numeric, mean)
在OP的代码中,它循环遍历各列,仅print
插入结果而不存储它。还有可能某些列不是numeric
。在下面的代码中,我们为vector
('v1')预先分配了0个值来存储输出。使用if/else
创建逻辑条件,如果是mean
或numeric
则返回else
返回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)