【发布时间】:2019-03-02 19:48:05
【问题描述】:
我在数据帧上有一个函数 f1,它调用另一个函数 f2,然后处理 f2 的输出。 f2 可自行交互工作,但如何在 f1 调用时让它运行?
f1 <- function(x, y) {
z <- f2(x, y)
# do stuff with z
w <- z
return(w)
}
f2 使用 subset() 取消选择某些列:
f2 <- function(x, y) {
y <- substitute(y)
subset(x, select = -eval(y))
}
如您所见,f2 以交互方式工作。我不在乎,但我确实希望它在被 f1 调用时工作。
# This works fine interactively (but I don't care about that)
f2(mtcars,mpg)
# This is what I want to work
f1(mtcars,mpg)
Error in -eval(y) : invalid argument to unary operator
我不希望更改 f1 或其参数。如何重写 f2 使其在 f1 中工作?
这是一个类似的问题,我无法将解决方案应用于我的上下文:R: passing expression to an inner function
【问题讨论】:
标签: r