标题有点松散,但我想为列表中的每个元素分配该元素在全局环境中出现的名称。
a<-1
b<-2
c<-3
l<-list(a,b,c)
我想要的是相当于以下内容:
l<-list("a"=a,"b"=b,"c"=c)
或
names(l)<-c("a","b","c")
以便
names(l)
返回c("a","b","c")
。
由于我可以拥有包含大量元素的列表,因此我宁愿避免最简单的解决方案所需的所有键入 (l<-list("a"=a,"b"=b,"c"=c)
)。
我知道我可以用
names(as.list(.GlobalEnv))
列出全局环境中所有变量的名称,但并非 .GlobalEnv
中的所有变量都包含在列表 l
中。
我也知道 deparse(substitute(a))
返回 "a"
,但它在循环或 lapply
调用中不起作用。
也许解决方案很简单,但我无法弄清楚。
我怎样才能以编程方式做到这一点?
使用
tibble::lst()
:
library(tibble)
l <- lst(a, b, c)
结果:
$a
[1] 1
$b
[1] 2
$c
[1] 3