2012-12-07 53 views
3

可能重複:
using substitute to get argument name with如何獲取傳遞給...的參數的名稱?

注意,這是從獲得矢量自己與list(...)或那種形式的東西-different-。我希望能夠做的只是'回聲'所有參數傳遞到...,在任何解析完成之前。

如:我想這可能只是行事像一個函數:

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

我已經得到的最接近的是

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

但這只是返回第一個參數由...「抓」 。思考?

+0

謝謝 - 馬立克做什麼,我需要提供的答案? –

回答

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

一些explnation 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 
+0

這不起作用,不幸的是 - 如果我傳入一個在環境中不存在的對象的名字,我會得到一個錯誤,說沒有找到該對象。即使對象不存在,我也希望能夠獲得該名稱。 –

+0

@CauchyDistributedRV我更新我的答案! – agstudy

+0

這樣做 - 看起來像'match.call()'是這裏的魔術功能。謝謝! –

相關問題