我正在根據一些虛擬變量創建自動繪圖儀。我這樣設置:根據函數R中的點點獲取可變參數的名稱(deparse)
plotter <- function(...) { }
將繪製我餵它的所有假人。
但是,我希望它能夠添加標籤的情節,即變量名稱。 我知道
deparse(substitute(variablename))
將產生
"variablename"
這是一個開始,但我要如何做到這一點在多個參數的情況下?有可能嗎?有沒有解決方法?
我正在根據一些虛擬變量創建自動繪圖儀。我這樣設置:根據函數R中的點點獲取可變參數的名稱(deparse)
plotter <- function(...) { }
將繪製我餵它的所有假人。
但是,我希望它能夠添加標籤的情節,即變量名稱。 我知道
deparse(substitute(variablename))
將產生
"variablename"
這是一個開始,但我要如何做到這一點在多個參數的情況下?有可能嗎?有沒有解決方法?
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"
但是,我在這裏確實需要分配他們的名字。它必須調用'plotter(longvarname = longvarname)'看起來有點愚蠢,沒有辦法讓它自己解釋而不必明確地添加名稱? – PascalVKooten
@Dualinity - 嘗試'名稱(llist(...))'(它在庫'Hmisc'中) – eddi
'[1]「...」NA',當給出2個參數時。 – PascalVKooten
我認爲如果你給出了一個你想要做的具體例子,這會得到改善。 – Dason