将R列表保存为单个元素

时间:2015-07-29 09:26:23

标签: r

我们说我在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,但这会使嵌套列表中的列表变得平坦。我怎么能这样做?

2 个答案:

答案 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