【发布时间】:2017-03-14 14:15:39
【问题描述】:
我在 ssh 服务器中运行 R 会话,但我的存储容量有限。我想知道是否有允许压缩的fwrite 实现?比如:
z <- gzfile("file.csv.gz")
fwrite(object, z)
【问题讨论】:
标签: r compression data.table
我在 ssh 服务器中运行 R 会话,但我的存储容量有限。我想知道是否有允许压缩的fwrite 实现?比如:
z <- gzfile("file.csv.gz")
fwrite(object, z)
【问题讨论】:
标签: r compression data.table
更新:截至 2019 年 10 月 3 日,以下更改也在 CRAN 上发布(从版本 1.12.4 开始),所以现在一个简单的install.packages("data.table") 就足够了。
data.table 现在支持 fwrite() 直接到 gzip 压缩的 csvs。截至 2019 年 8 月 28 日,它尚未在 CRAN 上发布,但您可以通过从 GitHub 安装获得它:
# Install development version of data.table
install.packages("data.table", repos="https://Rdatatable.gitlab.io/data.table")
# Generate some data
library(data.table)
dt <- data.table(
state = sample(state.name, size = 1e6, replace = TRUE),
measure = runif(1e6)
)
# Write to a gzipped file
data.table::fwrite(dt, file = "dt.gz")
# Read back
library(R.utils)
dt2 <- data.table::fread("dt.gz")
【讨论】:
您可以使用 R.utils 中的 gzip 功能:
library(R.utils)
library(data.table)
#Write gzip file
df <- data.table(var1='Compress me',var2=', please!')
fwrite(df,'filename.csv',sep=',')
gzip('filename.csv',destname='filename.csv.gz')`
# Read gzip file
fread('gzip -dc filename.csv.gz')
var1 var2
1: Compress me , please!
【讨论】:
data.table::fwrite 不支持连接。如果您确实需要附加数据,请使用 iotools::write.csv.raw 和 gzfile 连接。否则,您应该改用writeRDS 或fst::write_fst。
【讨论】: