R中输出每个列表项中具有不同数量元素的列表的最佳方法

时间:2016-04-26 07:33:36

标签: r

我有一个字符串列表如下

> mylist[2]
[[1]]
 [1] "BLUEFROG"      "BROWNFROG"    "TADPOLE"  

> mylist[5]
[[1]]
 [1] "POCKET"       "DELHI"     "BAT"     "OWL"   "PYTHON"    "PROGRAM"

因此,我们可以看到每个列表项的字符串数量不同。因此,如果我尝试     write.csv(MYLIST,FILE.CSV) 我收到一个错误。什么是在每个列表项中输出具有不同数量元素的此类文件的最佳方法。是否可以将mylist写入csv文件,每个列表项对应于csv文件中的一行?

3 个答案:

答案 0 :(得分:2)

保存此类对象的最佳方法是以RData格式保存。 尝试

save(mylist,file="myLists.Rdata")

如果您想在R中阅读它们,可以通过

进行
load("mylists.Rdata")

答案 1 :(得分:2)

您还可以尝试创建文件,然后将列表元素一次添加到文件中:

file.create("file.csv")
lapply(mylist, function(x) write.table(matrix(x, nrow=1), "file.csv", sep=",", append=TRUE, quote=FALSE, row.names=FALSE, col.names=FALSE))

虽然您的目标是稍后在R中导回数据,但您应该使用save / Rdata选项。

答案 2 :(得分:1)

我们可以在length中的元素中设置每个list元素length的最大list,以便list元素的数量更少元素元素将用NA填充。我们使用lapply循环遍历元素。填充NA后,在data.frame rbind元素之后转换为list,然后使用write.csv

dat <- as.data.frame(do.call(rbind, lapply(mylist, `length<-`, 
                 max(lengths(mylist)))), stringsAsFactors=FALSE)
write.csv(dat, "yourfile.csv", row.names=FALSE, quote=FALSE)

数据

mylist <- list(c("BLUEFROG", "BROWNFROG", "TADPOLE"), c("POCKET", 
          "DELHI", "BAT", "OWL", "PYTHON", "PROGRAM"))