2013-05-29 70 views
4

我正在根據一些虛擬變量創建自動繪圖儀。我這樣設置:根據函數R中的點點獲取可變參數的名稱(deparse)

plotter <- function(...) { } 

將繪製我餵它的所有假人。

但是,我希望它能夠添加標籤的情節,即變量名稱。 我知道

deparse(substitute(variablename)) 

將產生

"variablename" 

這是一個開始,但我要如何做到這一點在多個參數的情況下?有可能嗎?有沒有解決方法?

+0

我認爲如果你給出了一個你想要做的具體例子,這會得到改善。 – Dason

回答

9

names(list(...))將讓你包含已吸收了提供的參數名稱的字符向量由...

plotter <- function(...) {names(list(...))} 
plotter(x=1:4, y=11:14) 
# [1] "x" "y" 

另外,如果你想在未命名的參數傳遞,試試這個(這擴展@ baptiste現在刪除的答案):

plotter <- function(..., pch=16, col="red") { 
    nms <- setdiff(as.character(match.call(expand.dots=TRUE)), 
        as.character(match.call(expand.dots=FALSE))) 
    nms 
} 

x <- 1:4 
y <- 1:14 
plotter(x, y, col="green") 
# [1] "x" "y" 
+0

但是,我在這裏確實需要分配他們的名字。它必須調用'plotter(longvarname = longvarname)'看起來有點愚蠢,沒有辦法讓它自己解釋而不必明確地添加名稱? – PascalVKooten

+0

@Dualinity - 嘗試'名稱(llist(...))'(它在庫'Hmisc'中) – eddi

+0

'[1]「...」NA',當給出2個參數時。 – PascalVKooten

相關問題