R 中“data.frame 的标准公式接口”是什么意思?

2024-03-03

的文档aggregate states:

“aggregate.formula”是“aggregate.data.frame”的标准公式接口。

我是R新手,不明白这是什么意思。请解释!

Thanks!

Uri


跳转到示例部分的中间help(aggregate)你会看到这个:

 ## Formulas, one ~ one, one ~ many, many ~ one, and many ~ many:
 aggregate(weight ~ feed, data = chickwts, mean)
 aggregate(breaks ~ wool + tension, data = warpbreaks, mean)
 aggregate(cbind(Ozone, Temp) ~ Month, data = airquality, mean)
 aggregate(cbind(ncases, ncontrols) ~ alcgp + tobgp, data = esoph, sum)

四种不同的调用方式aggregate(),全部使用formula界面。上面你引用的内容的编写方式与整个 R 中使用的方法分派机制有关。

考虑第一个例子:

R> class(weight ~ feed)
[1] "formula"
R> class(chickwts)
[1] "data.frame"

所以聚合在它的第一个参数(类的formula)。在 R 中求解公式的方式通常围绕model.matrix,我认为这里发生了类似的事情,并且最终执行了等效的调用aggregate.data.frame,使用第二个参数chickwts, a data.frame.

R> aggregate(weight ~ feed, data = chickwts, mean)
       feed  weight
1    casein 323.583
2 horsebean 160.200
3   linseed 218.750
4  meatmeal 276.909
5   soybean 246.429
6 sunflower 328.917
R> 

你问的不是最简单的初学者问题,我建议你仔细阅读一些文档,如果你手头有一本像样的 R 书,我建议你仔细阅读。 (其他 SO 问题给出了接下来要读什么的建议。)

Edit:我不得不挖一点aggregate.formula()不导出自stats名称空间,但您可以通过键入来查看它stats:::aggregate.formula在提示符下——然后清楚地表明它实际上确实分派到aggregate.data.frame():

 [.... some code omitted ...]
    if (is.matrix(mf[[1L]])) {
        lhs <- as.data.frame(mf[[1L]])
        names(lhs) <- as.character(m[[2L]][[2L]])[-1L]
        aggregate.data.frame(lhs, mf[-1L], FUN = FUN, ...)
    }
    else aggregate.data.frame(mf[1L], mf[-1L], FUN = FUN, ...)
}
<environment: namespace:stats>
R> 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

R 中“data.frame 的标准公式接口”是什么意思? 的相关文章

随机推荐