以下几乎最小代码的要点是在函数f中应用ddply,其中ddply的聚合函数(helper)在f的定义中是自定义的 .
不幸的是,我不明白为什么采购整个代码段会产生eval中的错误(expr,envir,enclos):找不到函数"helper" . 当辅助函数独立于函数f运行时,代码有效 . 当我用 by 的未注释调用替换 ddply 调用时,代码运行没有错误 .
您能解释错误并提供解决方案或解决方法吗? [用plyr 1.8.1和R 3.0.3测试]
rm (list = ls())
library(plyr)
f <- function() {
dfx <- data.frame(
group = c(rep('A', 8), rep('B', 15), rep('C', 6)),
sex = sample(c("M", "F"), size = 29, replace = TRUE),
age = runif(n = 29, min = 18, max = 54)
)
helper <- function(x) {
return(max(x))
}
result <- ddply(dfx, .(group, sex), summarize, max_age = helper(age))
#result <- by(dfx$age, dfx[,c("group", "sex")], helper)
return(result)
}
print(f())
1 回答
尝试:
从
here
的帮助页面:summarize
就是这样一个特殊功能 .