2013-05-29 42 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

相关问题