2013-03-12 40 views
2

可以说我有一个函数接受总是列表的一部分的变量。获取作为函数参数提供的列表变量的名称

myfun <- function(x$name,y$name) { 
# stuff 
} 

我想要做的是获取使用的名称。

alist <- list(Hello=1,Goodbye=2) 

myfun(alist$Hello, alist$Goodbye) { 
# I want to be able to work with the characters "Hello" and "Goodby" in here 
} 

所以,在我的函数中,我将如何得到字符“你好”和“再见”。鉴于alist$Helloalist$Goodbye

+3

在这种情况下,为什么不通过'alist' func如:myfun < - function(x)'参数并使用'names(x)'访问名称? – Arun 2013-03-12 14:17:25

+1

下载者应该有礼貌地评论为什么。 – 2013-03-12 14:29:30

回答

9

记得plot.default这是否符合deparse(substitute(

a <- list(a="hello",b=c(1,2,3)) 
f <- function(x,y) { print(deparse(substitute(x))); print(deparse(substitute(y))) } 
f(a$a,a$b) 
#[1] "a$a" 
#[1] "a$b" 
+0

这导致我''报价'这看起来像它不猫()任何其他的屏幕。因此+1和复选标记。 'as.character(quote(x))[3]'给了我想要的东西。 – 2013-03-12 14:31:16

+0

一个问题是,该列表不需要包含您正在访问的元素......使用此方法。 'f(a $ x,a $ y)'给出'$ x,$ y',我不确定是否可取。 – Arun 2013-03-12 14:31:20

+0

@Arun如果参数出现在'TRUE'上,则'is.null'可能会引发错误或警告。 – 2013-03-13 02:20:26

6

事情是这样的,也许:

myfun <- function(x) { print(substitute(x))} 
myfun(iris$Sepal.Length) 
## iris$Sepal.Length 
+0

鉴于您同时回答+1。复选标记会降低分数 - 他需要更多分数! – 2013-03-12 14:33:46

3

我会用一个list参数创建函数:

myfun <- function(l) { 
    print(names(alist)) 
} 
myfun(alist) 
# [1] "Hello" "Goodbye" 
相关问题