aggregate各州的文件:
'aggregate.formula'是'aggregate.data.frame'的标准公式接口.
我是R的新手,我不明白这意味着什么.请解释!
谢谢!
乌里
Dir*_*tel 10
跳转到示例部分的中间,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)
Run Code Online (Sandbox Code Playgroud)
四个不同的调用aggregate(),都使用公式界面.上面用你引用的内容写的方式与整个R中使用的方法调度机制有关.
考虑第一个例子:
R> class(weight ~ feed)
[1] "formula"
R> class(chickwts)
[1] "data.frame"
Run Code Online (Sandbox Code Playgroud)
所以聚合调度它的第一个参数(类formula).在R中解析公式的方式通常围绕a model.matrix,我假设在这里发生了类似的事情,并且最终aggregate.data.frame使用第二个参数chickwtsa 执行等效调用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>
Run Code Online (Sandbox Code Playgroud)
你问的不是最简单的初学者问题,如果你有一个方便的话,我建议你仔细查看一些文档和一本体面的R书.(以及其他SO问题会给出关于下一步要阅读的内容的建议.)
编辑:我不得不挖掘一点,因为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>
Run Code Online (Sandbox Code Playgroud)