我有一个字符串列表如下
> 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文件中的一行?
答案 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"))