【问题标题】:How can I capture function arguments as strings in R?如何在 R 中将函数参数捕获为字符串?
【发布时间】:2020-09-10 18:52:35
【问题描述】:

我想捕获我传递给函数的传入参数。我怎样才能做到这一点?下面的功能不是我想要的。我想要的输出是"Using mtcars and am"。我的印象是 rlang 可以帮助解决这个问题,但我一直无法找到完成工作的函数。

fx_capture<- function(fx_data, fx_var) {
  name_data <- quote(fx_data)
  name_var  <- quote(fx_var)
  paste("Using", name_data, "and", name_var)
}

fx_capture(mtcars, am)
> "Using fx_data and fx_var"

【问题讨论】:

  • 使用substitute(fx_data)

标签: r tidyeval


【解决方案1】:

我们可以使用deparse(substitute

fx_capture<- function(fx_data, fx_var) {

     name_data <- deparse(substitute(fx_data))
     name_var <- deparse(substitute(fx_var))

     paste("Using", name_data, "and", name_var)
}

fx_capture(mtcars, am)

match.call

fx_capture<- function(fx_data, fx_var) {

   paste0("Using ", do.call(paste, c(lapply(match.call()[-1], 
              as.character), sep = ' and ')))
  
  
}

fx_capture(mtcars, am)

【讨论】:

    【解决方案2】:

    这是一个使用sys.call的选项

    fx_capture<- function(fx_data, fx_var) {
      paste0("Using ", paste0(sys.call()[-1],collapse = " and "))
    }
    

    这样

    > fx_capture(mtcars, am)
    [1] "Using mtcars and am"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-28
      • 2018-12-17
      • 1970-01-01
      • 1970-01-01
      • 2017-10-13
      • 1970-01-01
      相关资源
      最近更新 更多