如何在R中保存数据树?
我一直在查看如何在R中保存数据树?,r,data-structures,R,Data Structures,我一直在查看data.tree包的手册,但是在创建data.tree结构后,我无法找到保存该结构的方法。有没有办法写一个data.tree结构,而不是将它转换成另一个结构(即data.frame)然后保存它?你的问题有点模糊,因为我不知道你指的是什么类型的对象。然而,这似乎对我有效 data("acme") a = acme class(a) [1] "Node" "R6" x = tempdir() setwd(tempdir()) save(a, file = 'test.Rdata')
data.tree
包的手册,但是在创建data.tree
结构后,我无法找到保存该结构的方法。有没有办法写一个data.tree结构,而不是将它转换成另一个结构(即data.frame)然后保存它?你的问题有点模糊,因为我不知道你指的是什么类型的对象。然而,这似乎对我有效
data("acme")
a = acme
class(a)
[1] "Node" "R6"
x = tempdir()
setwd(tempdir())
save(a, file = 'test.Rdata')
rm(a)
load('test.Rdata')
a
这是一个相关问题的答案:如何将data.tree保存到另一个对象中 这一点非常重要,因为有几种方法改变了原始data.tree,这是我遇到的一个问题
# What one would expect
myDataTree_clone <- myDataTree
#人们会期待什么
myDataTree_clone@Hack-R那么你如何将其保存为csv?好吧,伙计们,公平地说,因为我很欣赏这两个答案我掷骰子选择了被接受的答案,获胜者是@Vandenman。不用担心,但仅供参考R大师(如Hadley Wickham)告诉我们它的计算速度更快,更可靠、更高效地将内容保存为.RDS文件而不是.RData。@Hack-R感谢您提供的信息,非常感谢!!!我试图将内存中500 Mb的data.tree保存到RData文件中,但在超过160 Gb后不得不取消。我还没有尝试过保存为RDS文件-你知道这是否有效吗?哦,好的,thnx,我认为它有一些特殊的方式。像这样保存很好。但是,请注意,保存的对象往往非常大,因为每个节点都是一个环境。有关原因的解释,请参见此处:。如果这太麻烦了,您可以在保存前将其转换为列表(例如,as.list
)或data.frame,然后在加载后将其转换回(使用as.Node
)。@ChristophGlur的观点很好!我的26000多个节点的data.tree对象由于太大而无法保存为RData文件。仅仅为了保存一个对象而来回转换似乎非常慢!A好的,我在手册中搜索了“保存”或“写入”都找不到任何内容,现在对我来说有意义了,thnx。
levelName name p cost level
1 Acme Inc. Acme Inc. NA NA 1
2 ¦--Accounting Accounting NA NA 2
3 ¦ ¦--New Software New Software 0.50 1000000 3
4 ¦ °--New Accounting Standards New Accounting Standards 0.75 500000 3
5 ¦--Research Research NA NA 2
6 ¦ ¦--New Product Line New Product Line 0.25 2000000 3
7 ¦ °--New Labs New Labs 0.90 750000 3
8 °--IT IT NA NA 2
9 ¦--Outsource Outsource 0.20 400000 3
10 ¦--Go agile Go agile 0.05 250000 3
11 °--Switch to R Switch to R 1.00 50000 3
>
# What one would expect
myDataTree_clone <- myDataTree
# What one should do instead
myDataTree_clone <- Clone(myDataTree)