3

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

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

writeFeather(x, path) 中的错误:未实现:a 是一个列表

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

我该怎么做呢?

4

2 回答 2

11

您可以使用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)

包中readrread_rdswrite_rds功能,甚至可以设置压缩。

于 2017-02-10T14:45:35.683 回答
2

我的经验tidyverse是它们不适用于包含列表的列。例如,filterfrom dplyr 对于 s 内的列表不能正常工作data.frame。因此,对于不受支持的操作,您会遇到支持此操作的功能。

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

于 2017-02-10T14:32:59.593 回答