使用函数内的汇总在plyr中逐列获取

时间:2013-08-23 15:42:31

标签: r plyr

我知道如何使用ddply在字符串中排序的列名,并通过get汇总外部函数,详见ddply + summarise function column name input。这在从提示符交互式工作时有效。

但是,当我尝试在函数内部执行此操作时,这不起作用。 我也知道还有其他方法可以解决这个问题,详见How can I use variable names to refer to data frame columns with ddply?。我只能避免总结。但问题是,我想了解它的工作原理(我正在重读Hadley的优秀书籍,刚刚转到http://adv-r.had.co.nz/

由于这类似于data.table,我提供了一个比较

require(data.table)
require(plyr)

dt = data.table(Alpha = 1:3, Beta = head(LETTERS,n=3))


testDt <- function(dt,colName) {
  dt[,mean(get(colName))]
}

testPlyr <- function(dt,colName) {
  ddply(.data=dt,.variables=NULL,.fun=summarise,mean(get(colName)))
}

testDt完美运行

testDt(dt,"Alpha")

但是当你执行

时,testPlyr会失败
testPlyr(dt,"Alpha")

当然,data.table和plyr以不同的方式处理调用中的表达式。

我也试过

testPlyr <- function(dt,colName) {
  e = environment()
  ddply(.data=dt,.variables=NULL,.fun=summarise,mean(get(colName,envir=e)))
}

但它不起作用。任何想法??

0 个答案:

没有答案