我是新手R用户&已经审查了网站上的相关问题。虽然在我遇到一些我无法解决的其他问题之前已经问过我的问题的标题。
我能够成功使用R控制台制作一个箱形图,其中包含我通过.csv导入的数据,其中包含一些NA值(使用boxplot(Test)
),其中Test是我的名字数据并包括3列数据,每个数据带有20个数据点的标签。
但是当我尝试计算均值时(通过使用:mean(Test)
或尝试将其添加到成功制作的boxplot中(通过使用: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)
,没有任何警告消息。 我很困惑这个问题是什么?任何建议真的很有帮助!谢谢
UPDATE2: 谢谢你的答案,工作得很好。
UPDATE1:
感谢下面帮助过的人 - 使用colMeans(Test, na.rm=TRUE)
返回所有列的方法。 然而,是否可以将平均值作为每个数据列的一个点添加到所有数据(即所有三列)的箱线图中?使用abline(v=colMeans(Test))
只会在整个图中添加一行。
其他信息:
当我使用:class(Test)
时,它返回:
[1] "data.frame"
我还使用sapply(Test, mode)
检查了我的数据类型(如果我使用了任何不正确的词语,请道歉),并为我的数据的所有3列返回“数字”。
仅部分数据集
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
答案 0 :(得分:1)
以下是如何使用三个数值变量创建箱线图并添加每个点的平均值的示例。
sample
在这种情况下,结果会返回前两列的#Create example data, including some NA values
set.seed(13121)
test = data.frame(a = c(rnorm(99, 1, 1), NA),
b = c(NA, rnorm(99, 0, 1)),
c = rnorm(100, 2, 2))
#Calculate means for each of the columns
means = colMeans(test)
,因为其中包含NA
个值:
NA
解决方案是添加means
# a b c
# NA NA 2.021736
选项(有关详细信息,请参阅na.rm = TRUE
):
?colMeans
现在我们准备做箱形图并用计算方法添加点:
means = colMeans(test, na.rm = TRUE)
means
# a b c
# 0.9843446 -0.1428516 2.0217361
结果: