在嵌套函数中传递准引用参数

时间:2018-08-28 23:23:20

标签: r dplyr quosure quasiquotes

下面,我写了一个简单的函数chat.client.addNewMessageToPage = function (name, message,receiverId) ,它计算了一个新变量snafu()

snafu_var

现在,我想将library(dplyr) df <- mtcars %>% select(am, cyl) %>% slice(1:5) snafu <- function(data, var1, var2){ require(dplyr) var1 <- enquo(var1) var2 <- enquo(var2) data %>% mutate(snafu_var = !!var1 + !!var2) } snafu(df, var1 = am, var2 = cyl) 嵌套在另一个函数snafu()中,该函数将利用foobar()创建的变量。

snafu()

我在两个方面(可能是相关问题)上苦苦挣扎:

1)foobar <- function(data, var1, var2) { require(dplyr) data <- snafu(data, var1, var2) data %>% mutate(foo_var = snafu_var + 1) } foobar(df, var1 = am, var2 = cyl) 中的嵌套函数似乎无法访问提供给foobar()的参数,从而导致错误消息:

foobar()

2)一旦嵌套函数开始工作,如何在函数Error in mutate_impl(.data, dots) : Evaluation error: object 'am' not found. 中调用它的输出snafu_var

这只是更复杂的嵌套函数的代表,但解决我的问题的关键是嵌套函数,并且嵌套函数foobar()创建的变量由父函数{ {1}}。

1 个答案:

答案 0 :(得分:2)

在foobar中使用...

foobar <- function(data, ...) {

  data <- snafu(data, ...)

  data %>% mutate(foo_var = snafu_var + 1)
}