我想将具有列表列的tibble
保存到磁盘(以后仅在R中使用)。理想情况下,我喜欢像feather
这样的快速二进制格式,但它似乎不支持列表列:
test <- tibble(a= list(c(1,2), c(3,4)))
feather::write_feather(test, 'test.csv')
writeFeather(x,path)出错:未实现:a是列表
我期待readr
包中的方法能够处理这个问题,但我尝试过的方法似乎都没有。
我该怎么做?
答案 0 :(得分:5)
您可以使用saveRDS
和readRDS
功能:
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_rds
和write_rds
个函数,甚至可以设置压缩。
答案 1 :(得分:1)
我对jso2
的体验是它们不适用于包含列表的列。例如,来自dplyr的tidyverse
对filter
内的列表无法正常工作。因此,对于不受支持的操作,您会遇到支持此功能的功能。
如果您只想找到一种在磁盘上存储任何R对象的方法,我建议您查看data.frame
或save
(以及saveRDS
和load
) 。这将R对象序列化为二进制格式。请注意,这仅用作R会话之间的存储,并且不能与其他分析工具(如Python或SPSS)互操作。