我希望在数据框中从我选择的列中获得单个均值,但它不能从两列中运行。我试过这个:
testDF <- data.frame(v1 = c(1,3,15,7,18,3,5,NA,4,5,7,9),
v2 = c(11,33,55,7,88,33,55,NA,44,5,67,99),
v3 = c(NA,33,5,77,88,3,55,NA,4,55,87,14))
mean(testDF[,2:3], na.rm=T)
我收到此警告信息:
mean(testDF [,2:3],na.rm = T)
[1] NA
警告信息:
在mean.default(testDF [,2:3],na.rm = T)中:
参数不是数字或逻辑:返回NA
如果我使用sum()
功能,它可以很好地工作,但我不明白为什么它不适用于mean()
功能。在执行了一些步骤之后,我使用melt()
包中的reshape2{}
函数完成了它,但我看起来很简单,因为我有很多变量和数据。
此致
答案 0 :(得分:3)
mean
的帮助说:
目前有数字/逻辑向量和日期,日期时间和时间间隔对象的方法。
这让我觉得mean
不适用于数据框。
确实,您会看到执行mean(testDF)
导致同样的错误,但mean(testDF[,1])
有效。
最简单的解决方案是:
mean(as.matrix(testDF[,2:3]), na.rm=T)
此外,您可以使用colMeans
来获取每列的平均值。
的确,如果你查看colMeans
的来源,第一行是:
if (is.data.frame(x))
x <- as.matrix(x)