我们说我在R中有一个嵌套列表。我怎样save
将.Rdata
列表作为列表中的单个顶级元素?
我的意思是,例如样本数据
samplist <- list(a=list(x=2, y=runif(10)),
b=list(x=3, y=rbinom(10, 5, .5)),
c=list(x=0, y=rnorm(10))
)
我想要的输出相当于
a <- samplist$a
b <- samplist$b
c <- samplist$c
save(a, b, c, file=output.Rdata)
在包含许多顶级元素的列表中自动完成。我使用unlist
尝试了recursive=F
,但这会使嵌套列表中的列表变得平坦。我怎么能这样做?
答案 0 :(得分:1)
将列表转换为环境的解决方案。
# Test list
samplist <- list(a=list(x=2, y=runif(10)),
b=list(x=3, y=rbinom(10, 5, .5)),
c=list(x=0, y=rnorm(10)))
# Convert list as an environment
env <- as.environment(samplist)
# Save objects form the environment
save(list = ls(env), file = "output.Rdata", envir = env)
# Load file
load("output.Rdata")
答案 1 :(得分:1)
您不需要存储环境:
do.call(save,
c(as.list(names(samplist)),
list(file = "output.Rdata",
envir = as.environment(samplist))))
load("output.Rdata")
print(a)
#$x
#[1] 2
#
#$y
#[1] 0.6815263 0.5448165 0.3346296 0.2127811 0.1804896 0.8416717 0.1060889 0.5679649 0.6392396 0.9770226