我正在根据一些虚拟变量创建自动绘图仪。我这样设置:根据函数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