我试过使用下面的代码但是失败了。我想知道它失败的原因以及正确(优雅)的方法是什么?
rm(list=ls())
a <- 1
b <- 2
res <- lapply(ls(), function(x, l) { l$x <- get(x)}, l=list())
我希望我得到像
这样的结果res
# $a
# [1] 1
# $b
# [1] 2
但我得到的是
res
# [[1]]
# [1] 1
# [[2]]
# [1] 2
答案 0 :(得分:3)
我们可以使用mget
获取多个对象的值,并返回named
list
mget(ls())
#$a
#[1] 1
#$b
#[1] 2
如果我们需要使用get
,请使用ls()
setNames(lapply(ls(), get), ls())
答案 1 :(得分:1)
使用 sapply :
sapply(ls(), get, simplify = FALSE)
# $a
# [1] 1
#
# $b
# [1] 2
sapply 具有简化和 USE.NAMES 参数,两者的默认值均为 TRUE 。因此,通过将简化设置为 FALSE ,我们将结果保留为命名列表。