R:将列表导出并导入到.txt文件
问题描述:
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
然后,您将可以重新构建列表结构。
+0
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