如何在R中单独保存列表的元素?

问题描述 投票:1回答:2

所以我有一个很长的元素列表,我想将每个元素单独保存为数据帧。是的,现在我想通过以下方式这样做:

for (i in 1:length(mylist)) {
  save.dta13(mylist[i], file=paste0(names(mylist)[i], ".dta"))
}

但这似乎没有用,有什么想法吗?

r list for-loop elements
2个回答
0
投票

我们可以使用lapply循环nameslist

lapply(names(mylist), function(nm)
     save.dta13(mylist[[nm]], paste0(nm, ".dta")))

1
投票

这是另一个解决方案(与akrun发布的略有不同)

#An example list

L=list(mat1=matrix(c(1,2,3,4,5,6,7,8,9),3,3),mat2=matrix(c(1,2,3,4,5,6,7,8,9),3,3),mat3=matrix(c(1,2,3,4,5,6,7,8,9),3,3))

#Convert elements of list to a data frame
L_DF = lapply(L,function(x)as.data.frame(x))

#Check the class of each element 
 class(L_DF$mat1)
#[1] "data.frame"



  class(L_DF$mat2)
#[1] "data.frame"


     class(L_DF$mat3)
#[1] "data.frame"


   names(L_DF)
#[1] "mat1" "mat2" "mat3"



#Save as dta

lapply(names(L_DF), function(x) {
     f <- L_DF[[x]]
     save(f, file=paste0(getwd(),'/', x, '.dta'))
 })
© www.soinside.com 2019 - 2024. All rights reserved.