如何在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)