3

可能重复:
使用替换来获取参数名称

list(...)请注意,这与使用向量本身或其他形式获取向量不同。...在完成任何解析之前,我希望能够做的只是“回显”传入的所有参数。

例如:我想要一个功能可能就像:

f(apple, banana, car)
## --> returns c("apple", "banana", "car"), 
## ie, skips looking for the objects apple, banana, car

我得到的最接近的是

f <- function(...) {
  return( deparse( substitute( ... ) ) )
}

但这仅返回第一个参数“捕获”的.... 想法?

4

1 回答 1

6
f <- 
  function(...){
     match.call(expand.dots = FALSE)$`...`  
  }

来自 ?match.call 的一些解释:

 1. match.call returns a call in which all of the specified arguments are specified by their full names .
 2. Here it is used to pass most of the call to another function, often model.frame. 
    Here the common idiom is that expand.dots = FALSE

这里有一些测试:

f(2)        # call of a static argument  
[[1]]
[1] 2

> f(x=2)  # call of setted argument
$x
[1] 2

> f(x=y)  # call of symbolic argument
$x
y
于 2012-12-07T19:37:04.043 回答