我希望能够将列名发送给我正在进行的通话ddply.一个示例ddply电话:
ddply(myData, .(MyGrouping), summarise, count=sum(myColumnName))
Run Code Online (Sandbox Code Playgroud)
如果我已经ddply包装在另一个函数中,是否可以将其包装起来以便我可以传递一个任意值myColumnName来调用函数?
Jus*_*tin 11
必须有一个更好的方法.我无法弄清楚如何使它与总结一起工作.
my.fun <- function(df, count.column) {
ddply(df, .(x), function(d) sum(d[[count.column]]))
}
dat <- data.frame(x=letters[1:2], y=1:10)
> my.fun(dat, 'y')
x V1
1 a 25
2 b 30
>
Run Code Online (Sandbox Code Playgroud)
就像@David Arenburg所说的那样,这个问题已经很老了。如今,无论是data.table还是dplyr包装,都可以更快的速度获得相同的结果。
这是data.table答案的版本。
library(data.table)
my.fun <- function(myData, MyGrouping, myColumnName) {
setDT(myData)[, lapply(.SD, sum), by=MyGrouping, .SDcols=myColumnName]
}
Run Code Online (Sandbox Code Playgroud)