gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 23:54:09 27 4
gpt4 key购买 nike

下面我写了一个简单的函数 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() 创建的变量.
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)

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

1) foobar()内的嵌套函数似乎无法访问提供给 foobar() 的参数,导致错误消息:
Error in mutate_impl(.data, dots) : 
Evaluation error: object 'am' not found.

2) 一旦我让嵌套函数工作,我该如何调用它的输出, snafu_var函数内 foobar() ?

这只是一个更复杂的嵌套函数的代表,但解决我的问题必不可少的是函数是嵌套的,并且由嵌套函数创建的变量, snafu() ,被父函数利用, foobar() .

最佳答案

在 foobar 中使用 ...:

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

data <- snafu(data, ...)

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

关于r - 在嵌套函数中传递准引用参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52067429/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com