说,我有以下数据:
LungCap Age Height Smoke Gender Caesarean
6.475 6 62.1 no male no
10.125 18 74.7 yes female no
9.55 16 69.7 no female yes
11.125 14 71 no male no
4.8 5 56.9 no male no
6.225 11 58.7 no female no
现在请查看以下命令:
> attach(LungCap6)
> tapply(Age, Smoke, mean, T)
Error in mean.default(X[[i]], ...) : 'trim' must be numeric of length one
> length(Age)
[1] 6
> tapply(X=Age, INDEX=Smoke, FUN=mean, na.rm=T)
no yes
10.4 18.0
> tapply(Age, Smoke, mean, T)
Error in mean.default(X[[i]], ...) : 'trim' must be numeric of length one
>
为什么会出现上述错误,以及如何解决?
答案 0 :(得分:1)
trim=
是函数mean()
的第二个参数,在TRUE
中调用时,您不想将tapply()
传递给该参数。这就是tapply()
的工作,它将额外的args保留顺序保留给它调用的函数。
因此,您必须明确命名要发送的参数TRUE
,在本例中为na.rm=
,因为它是mean()
的第三个参数,而不是第二个参数:>
> attach(LungCap6)
> tapply(Age, Smoke, mean, na.rm=TRUE)
使用?mean