R stats::aggregate() 的"object not found"错误:两个类似的测试有不同的结果?



这里有两个示例代码,都旨在展示/测试 R 统计包中的 aggregate((。我从这里获取的第一个:

attach(mtcars)
aggdata <-aggregate(mtcars, by=list(cyl,vs), 
FUN=mean, na.rm=TRUE)
print(aggdata)

这将返回它应该返回的内容:

Group.1 Group.2      mpg cyl   disp       hp     drat       wt     qsec vs        am     gear     carb
1       4       0 26.00000   4 120.30  91.0000 4.430000 2.140000 16.70000  0 1.0000000 5.000000 2.000000
2       6       0 20.56667   6 155.00 131.6667 3.806667 2.755000 16.32667  0 1.0000000 4.333333 4.666667
3       8       0 15.10000   8 353.10 209.2143 3.229286 3.999214 16.77214  0 0.1428571 3.285714 3.500000
4       4       1 26.73000   4 103.62  81.8000 4.035000 2.300300 19.38100  1 0.7000000 4.000000 1.500000
5       6       1 19.12500   6 204.55 115.2500 3.420000 3.388750 19.21500  1 0.0000000 3.500000 2.500000

现在让我们尝试我写的一个简短的代码来测试 aggregate((:

a = data.frame('t'=c(6,7),'u'=c(8,9),'house' = c(1,2))
b = data.frame('t'=c(1,2),'u'=c(3,4),'house' = c(2,3))
c = rbind(a,b)
aggregate(c,by=list(house),FUN=mean,na.rm=TRUE)

我完全迷失了。我找不到任何原因,为什么我的测试用例与第一个示例用例不同,但它返回了不同的结果:

Error in aggregate.data.frame(c, by = list(house), FUN = mean, na.rm = TRUE) : 
 object 'house' not found

这里可能有什么问题?第一个和第二个测试用例有何不同?我错过了什么?

您应该在运行该代码之前附加数据集:

attach(c)
aggregate(c,by=list(house),FUN=mean,na.rm=TRUE)

您还可以在聚合函数中定义变量 house,如下所示:

aggregate(c,by=list(c$house),FUN=mean,na.rm=TRUE)

希望这有帮助。

最新更新