R 在另一个函数中定义聚合函数时发生ddply错误
以下几乎最小代码的要点是在函数f中应用ddply,其中ddply的聚合函数(helper)在函数f的定义中是自定义的 不幸的是,我不明白为什么对整个代码段进行寻源会产生错误 eval(expr、envir、enclose)中出错:找不到函数“helper”。当helper函数独立于函数f运行时,该代码起作用。当我将ddply调用替换为by的未注释调用时,代码运行时不会出错 您能否解释错误并提供解决方案或解决方法?[使用plyr 1.8.1和R 3.0.3进行测试]R 在另一个函数中定义聚合函数时发生ddply错误,r,plyr,R,Plyr,以下几乎最小代码的要点是在函数f中应用ddply,其中ddply的聚合函数(helper)在函数f的定义中是自定义的 不幸的是,我不明白为什么对整个代码段进行寻源会产生错误 eval(expr、envir、enclose)中出错:找不到函数“helper”。当helper函数独立于函数f运行时,该代码起作用。当我将ddply调用替换为by的未注释调用时,代码运行时不会出错 您能否解释错误并提供解决方案或解决方法?[使用plyr 1.8.1和R 3.0.3进行测试] rm (list = ls()
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())
rm(list=ls())
图书馆(plyr)
f试试:
结果尝试:
结果尝试:
结果尝试:
结果非常好,效果非常好!非常感谢你的快速回答。事后看来,我猜plyr中添加“here”正是为了解决这种环境问题。太好了,效果非常好!非常感谢你的快速回答。事后看来,我猜plyr中添加“here”正是为了解决这种环境问题。太好了,效果非常好!非常感谢你的快速回答。事后看来,我猜plyr中添加“here”正是为了解决这种环境问题。太好了,效果非常好!非常感谢你的快速回答。事后看来,我猜plyr中添加“此处”正是为了解决此类环境问题。
result <- ddply(dfx, .(group, sex), here(summarize), max_age = helper(age))