将列表列中的tibble保存到磁盘

时间:2017-02-10 14:15:06

标签: r tidyverse feather

我想将具有列表列的tibble保存到磁盘(以后仅在R中使用)。理想情况下,我喜欢像feather这样的快速二进制格式,但它似乎不支持列表列:

test <- tibble(a= list(c(1,2), c(3,4)))
feather::write_feather(test, 'test.csv')
  

writeFeather(x,path)出错:未实现:a是列表

我期待readr包中的方法能够处理这个问题,但我尝试过的方法似乎都没有。

我该怎么做?

2 个答案:

答案 0 :(得分:5)

您可以使用saveRDSreadRDS功能:

library(tibble)
test <- tibble(a= list(c(1,2), c(3,4)))
saveRDS(test, "c:/test.rds")
test_2 <- readRDS("c:/test.rds"))
identical(test, test_2)

readr包中有read_rdswrite_rds个函数,甚至可以设置压缩。

答案 1 :(得分:1)

我对jso2的体验是它们不适用于包含列表的列。例如,来自dplyr的tidyversefilter内的列表无法正常工作。因此,对于不受支持的操作,您会遇到支持此功能的功能。

如果您只想找到一种在磁盘上存储任何R对象的方法,我建议您查看data.framesave(以及saveRDSload) 。这将R对象序列化为二进制格式。请注意,这仅用作R会话之间的存储,并且不能与其他分析工具(如Python或SPSS)互操作。