代码之家  ›  专栏  ›  技术社区  ›  Joe

在嵌套函数中传递准独立参数

  •  1
  • Joe  · 技术社区  · 8 年前

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

    斯纳福() ,由父函数使用, .

    1 回复  |  直到 8 年前
        1
  •  3
  •   G. Grothendieck    8 年前

    使用。。。在foobar中:

    foobar <- function(data, ...) {
    
      data <- snafu(data, ...)
    
      data %>% mutate(foo_var = snafu_var + 1)
    }
    
    推荐文章