如何获得函数调用中用于省略号的参数的名称,无论它们是否打包到列表中?
如果将参数直接传递到函数中,那么下面的函数可以很好地工作。
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中处理这一问题?
非常感谢。
作为一种变通方法,请尝试以下操作
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"