将函数从参数传递到嵌套函数
Passing on a function from parameter into a nested function
简而言之,我想 运行 以下最小代码段:
library(plyr)
surround = function(my.df, my.var, my.val, my.method) {
ddply(my.df, my.var, summarize, value = my.method(as.name(my.val)))
}
my.df = data.frame(group = rep(letters[1:4], times = 25),
x = rnorm(100))
surround(my.df, "group", "x", mean)
然而,这导致Error: could not find function "my.method"
。我确实意识到这是一个范围问题,我应该使用 eval
或 substitute
但我无法弄清楚。
如果您使用自定义函数而不是 summarise,它会起作用。
surround <- function(my.df, my.var, my.val, my.method) {
ddply(my.df, my.var, function(x) c(value = my.method(x[[my.val]])))
}
my.df <- data.frame(group=rep(letters[1:4], times=25),
x=rnorm(100))
surround(my.df, "group", "x", mean)
简而言之,我想 运行 以下最小代码段:
library(plyr)
surround = function(my.df, my.var, my.val, my.method) {
ddply(my.df, my.var, summarize, value = my.method(as.name(my.val)))
}
my.df = data.frame(group = rep(letters[1:4], times = 25),
x = rnorm(100))
surround(my.df, "group", "x", mean)
然而,这导致Error: could not find function "my.method"
。我确实意识到这是一个范围问题,我应该使用 eval
或 substitute
但我无法弄清楚。
如果您使用自定义函数而不是 summarise,它会起作用。
surround <- function(my.df, my.var, my.val, my.method) {
ddply(my.df, my.var, function(x) c(value = my.method(x[[my.val]])))
}
my.df <- data.frame(group=rep(letters[1:4], times=25),
x=rnorm(100))
surround(my.df, "group", "x", mean)