【问题标题】:deparse and substitute on ellipsis to get names of parameters对省略号进行解析和替换以获取参数名称
【发布时间】:2022-07-07 17:49:10
【问题描述】:

如何获取函数调用中用于省略号的参数名称,无论它们是否打包到列表中?

如果将参数直接传递给函数,则以下函数可以正常工作。

foo <- function(...) {
  sapply(substitute(...()), deparse)
}

a <- 1:3
b <- 2:6
foo(a, b)

result: "a" "b"

现在我将参数显式打包到一个列表中,以使我的代码对管道更友好:

foo(list(a, b))

result: "list(a, b)"

函数 foo 也应该使用它,只返回名称 a 和 b。如何在函数 foo 中处理这个问题?

非常感谢。

【问题讨论】:

    标签: r function ellipsis


    【解决方案1】:

    作为一种解决方法,试试这个

    foo <- function(...) {
        x <- substitute(...())
        if(class(x[[1]]) == "call")  sapply(x[[1]][-1] , deparse)
        else sapply(x , deparse)
    }
    
    
    • 输出
    > foo(list(a, b))
    [1] "a" "b"
    
    > foo(a, b)
    [1] "a" "b"
    
    

    【讨论】:

      猜你喜欢
      • 2017-10-28
      • 1970-01-01
      • 1970-01-01
      • 2014-10-09
      • 2012-02-05
      • 1970-01-01
      • 2021-06-27
      • 1970-01-01
      相关资源
      最近更新 更多