下面我写了一个简单的函数
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)
现在我想筑巢
foobar()
它将利用
斯纳福()
.
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()
似乎无法访问提供给的参数
,导致错误消息:
Error in mutate_impl(.data, dots) :
Evaluation error: object 'am' not found.
斯纳富乌瓦尔
在函数内
foobar()
斯纳福()
,由父函数使用,
.