【发布时间】:2015-11-01 23:17:41
【问题描述】:
我是新手 R 用户并已查看网站上的相关问题。虽然在我遇到一些我无法解决的其他问题之前已经询问了我的问题的标题。
我能够成功使用 R 控制台制作箱线图,其中包含我通过 .csv 导入的数据,其中包含一些 NA 值(使用 boxplot(Test)),其中 Test 是我的数据的名称,包括 3 列数据,每列带有 20 个数据点的标签。
但是当我尝试计算平均值时(通过使用:mean(Test) 或尝试将其添加到成功制作的箱线图中(通过使用:abline(v=mean(Test)),它给了我以下警告消息:
Warning message:
In mean.default(Test) : argument is not numeric or logical: returning NA
现在当我尝试:sapply(Test, mean, na.rm = TRUE) 时,我确实得到了正确的结果,但随后出现了警告消息:
Warning message:
In mean.default(X[[i]], ...) :
argument is not numeric or logical: returning NA
使用Summary (Test) 时,所有正确的计算都会出现,没有任何警告消息。 我对问题是什么感到困惑?任何建议都会有帮助!谢谢你
更新 2: 感谢您在下面的回答,效果很好。
更新1:
感谢那些在下面提供帮助的人 - 使用 colMeans(Test, na.rm=TRUE) 返回我所有列的方法。 但是,是否可以将每个单独数据列的平均值作为一个点添加到所有数据(即所有三列)的箱线图中?使用abline(v=colMeans(Test)) 只会在整个图中添加一行。
附加信息:
当我使用:class(Test) 时,它会返回:
[1] "data.frame"
我还使用sapply(Test, mode) 检查了我的数据类型(如果我使用了任何不正确的词,请致歉),它会为我的所有 3 列数据返回“numeric”。
仅部分数据集
a b c
0.68 0.68 0.68
0.28 0.28 0.28
0.62 0.62 0.62
0.73 0.73 0.73
【问题讨论】:
-
对于
mean,您需要指定列,即mean(Test[,1]),以获得第一列的平均值。如果有多个列,colMeans(Test)会给出每列的mean。你能显示一个示例数据吗 -
你可能有一个
factor。它们是类别的numeric表示,但您无法对它们进行数学运算。例如。factor(c("male","female"))是什么意思?没有意义。试试sapply(Test, class) -
这是因为您没有将所有列都设为数字。有些列可能是因子或字符类。
-
dput(head(Test,1))显示什么?这将一劳永逸地解决这个问题。 -
三列有 20 个数据点是一个小集合。为什么不在帖子中复制
dput(Test)的整个输出?