可以使用`data.table`和fzfile的fwrite吗?

Mar*_* GS 7 compression r data.table

我在ssh服务器上运行R会话,而且我的存储容量有限.我想知道是否有fwrite允许压缩的实现?就像是:

z <- gzfile("file.csv.gz)
fwrite(object, z)
Run Code Online (Sandbox Code Playgroud)

use*_*034 8

你可以在 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!
Run Code Online (Sandbox Code Playgroud)


Joz*_*zef 8

更新:从2019-10-03开始,以下更改也在CRAN上发布(从1.12.4版本开始),因此install.packages("data.table")现在简单就足够了。

data.table现在fwrite()直接支持压缩的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")
Run Code Online (Sandbox Code Playgroud)