This post提出了一種將列表寫入文件的方法。R:將列表導出並導入到.txt文件
lapply(mylist, write, "test.txt", append=TRUE, ncolumns=1000)
這個美特殊的問題是列表(結構爲子部分和子部件中的名稱)的信息的一部分消失,因此這是非常複雜的(或不可能的,如果我們失去了額外信息)從文件重新創建原始列表。
什麼是導出和導入(不會導致任何修改,包括名稱)列表的最佳解決方案?
This post提出了一種將列表寫入文件的方法。R:將列表導出並導入到.txt文件
lapply(mylist, write, "test.txt", append=TRUE, ncolumns=1000)
這個美特殊的問題是列表(結構爲子部分和子部件中的名稱)的信息的一部分消失,因此這是非常複雜的(或不可能的,如果我們失去了額外信息)從文件重新創建原始列表。
什麼是導出和導入(不會導致任何修改,包括名稱)列表的最佳解決方案?
您可以保存使用這些命令的列表(假設有含一個點沒有元素名稱)
l1 <- list(a = 1, b = list(c = 1, d = 2))
vectorElements <- unlist(l1)
vectorPaths <- names(vectorElements)
vectorRows <- paste(vectorPaths, vectorElements)
write.table(vectorRows, "vectorRows.txt", row.names = FALSE, col.names = FALSE, quote = FALSE)
文件的每一行對應的元素以這種格式
node1.node2.node3 leaf
然後,您將可以重新構建列表結構。
This將無法可靠地工作:列表名稱中可能有'.',因此您不能保證重新構建結構會得到相同的列表。實際上,我認爲它們基本上可以具有任何字符,例如'list('a:2^3'= 42)'有效。 – naught101 2017-02-28 07:12:19
你可以只使用YAML庫:
R> library(yaml)
R> l1 <- list('1'=2, se7en=list('som:eth|ng~horr1ßl€'=42))
R> l1
$`1`
[1] 2
$se7en
$se7en$`som:eth|ng~horr1ßl€`
[1] 42
R> cat(as.yaml(l1), file='blah.txt')
R> l2 <- yaml.load_file('blah.txt')
R> l2
$`1`
[1] 2
$se7en
$se7en$`som:eth|ng~horr1ßl€`
[1] 42
''dput'或dump''save'將所有寫的R對象到外部文件。 'save'將會給出一個二進制格式,而另外兩個文本表示。 – thelatemail 2014-12-10 23:35:55
爲什麼不使用'saveRDS'什麼的? – rawr 2014-12-10 23:36:09
如果你確切地想要在控制檯輸出中看到什麼,那麼:cat(capture.output(print(my.list),file =「test.txt」)'儘管我認爲dput策略會更好,因爲它可以是'source()'-ed – 2014-12-10 23:45:04