【发布时间】:2011-04-19 10:00:29
【问题描述】:
我喜欢使用ddply 编写一个函数,它根据data.framemat 的两列名称输出汇总统计信息。
mat是一个大的data.frame,列名"metric", "length", "species", "tree", ...,"index"index是具有 2 个级别的因子"Short", "Long""metric", "length", "species", "tree"等都是连续变量
功能:
summary1 <- function(arg1,arg2) {
...
ss <- ddply(mat, .(index), function(X) data.frame(
arg1 = as.list(summary(X$arg1)),
arg2 = as.list(summary(X$arg2)),
.parallel = FALSE)
ss
}
我希望调用 summary1("metric","length") 后的输出如下所示
Short metric.Min. metric.1st.Qu. metric.Median metric.Mean metric.3rd.Qu. metric.Max. length.Min. length.1st.Qu. length
.Median length.Mean length.3rd.Qu. length.Max.
....
Long metric.Min. metric.1st.Qu. metric.Median metric.Mean metric.3rd.Qu. metric.Max. length.Min. length.1st.Qu. length
.Median length.Mean length.3rd.Qu. length.Max.
....
目前该函数没有产生所需的输出?这里应该做哪些修改?
感谢您的帮助。
这是一个玩具示例
mat <- data.frame(
metric = rpois(10,10), length = rpois(10,10), species = rpois(10,10),
tree = rpois(10,10), index = c(rep("Short",5),rep("Long",5))
)
【问题讨论】:
-
如果您提供示例数据(最好使用
dput),这将更容易回答。 -
@Richie- 这是一个玩具示例
mat<-data.frame(metric=rpois(10,10),length=rpois(10,10),species=rpois(10,10),tree=rpois(10,10),index=c(rep("Short",5),rep("Long",5)))- 谢谢 -
您可以编辑问题以添加示例数据而不是写评论(我为您完成了;))。
-
我建议通过为
data.frame和要拆分的变量传递附加参数来使您的函数更通用。这样,当您需要在名为Mat或MAT或MyOtherData等的 data.frame 上使用它时,您的函数将起作用。 -
应该有一个 R 通用函数。甚至支持任意数量的论点。有这样的吗?