将带有列表列的标题保存到磁盘

Save a tibble with list columns to disk

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

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

Error in writeFeather(x, path) : Not implemented: a is a list

我原以为 readr 包中的方法能够处理这个问题,但我试过的 none 似乎能够。

我该怎么做?

我对 tidyverse 的体验是它们不适用于包含列表的列。例如,dplyr 中的 filter 对于 data.frame 内的列表无法正常工作。因此,对于不受支持的操作,您只能使用支持它的功能。

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

您可以使用 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函数,甚至可以设置压缩。