从列名发送到函数的ddply

Dav*_*ave 19 r plyr

我希望能够将列名发送给我正在进行的通话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)


Hao*_*Hao 5

就像@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)