我希望使用一个函数,在lapply
中使用标准的deparse(substitute(x))
技巧。不幸的是,我只能得到循环的参数。以下是我的完全无用的可重现示例:
# some test data
a <- 5
b <- 6
li <- list(a1=a,b2=b)
# my test function
tf <- function(obj){
nm <- deparse(substitute(obj))
res <- list(myName=nm)
res
}
tf(a)
#returns
$myName
[1] "a"
这很好。如果我使用lapply
,我要么得到[[1L]]
,要么是匿名函数的x
参数。
lapply(li,function(x) tf(x))
# returns
$a1
$a1$myName
[1] "x"
$b2
$b2$myName
[1] "x"
有没有办法获得以下内容?
$a1
$a1$myName
[1] "a1"
$b2
$b2$myName
[1] "b1"
如果关于deparse(substitute(x))
和lapply
还有更常见的问题,我也很想知道。
编辑:
使用接受多个参数并因此可以使用对象名称和对象本身名称的匿名函数与使用不同之处在于,tf
函数只接受一个参数。因此,这里无法正常工作...
lapply
将值传递给函数,而不是变量引用。 - James