【发布时间】:2020-11-26 10:26:26
【问题描述】:
我有 300 多个 .rds 文件,每个文件都有相同的列名,我想将它们绑定到一个压缩的 .rds 文件中,我可以通过 sftp 传输该文件。
有没有办法在不将它们读入内存的情况下有效地做到这一点?
目前我正在使用以下代码,但这会在写入文件之前最大化内存。任何想法都非常感谢。
library(tidyverse)
library(data.table)
df <- list.files(pattern = ".rds") %>%
map(readRDS) %>%
data.table::rbindlist()
saveRDS(df,"df.rds")
最终我一一阅读并使用read::write_csv("name.csv",append=TRUE) 将它们附加到磁盘上。之后我使用 {disk.frame} 或 SQL 数据库来处理数据。
【问题讨论】:
-
AFAIK,您不能将数据附加到 RDS 文件。文件格式适用于任意 R 对象。仅附加对于表格数据是明智的。如果您使用未压缩的 RDS,您可能能够破解具有低级功能的东西,但这将是大量的工作。购买/租用更多 RAM 会更便宜。
-
就我个人而言,我使用 CSV 并在传输前简单地压缩它。
-
即使你以某种方式设法做到这一点,你认为如何打开那个巨大的(300GB)文件?
-
您提到您使用
disk.frame将比内存文件更大的文件拆分为更小的块。为什么不直接压缩disk.frame文件夹而不是尝试创建单个 .rds? -
@MadsBoyd-Madsen 你能补充更多细节吗?我不熟悉流式传输
rds文件。你有一些关于如何做的参考吗?
标签: r