来自档案的文件的fread()

Vas*_*y A 12 r data.table

我想知道data.table从存档文件中读取a的推荐方法是什么(在我的情况下是zip存档).一个显而易见的选择是将其解压缩到一个临时文件然后fread()像往常一样.我不想费心创建新的文件,所以不是我使用read.table()unz()连接,然后用它转换data.table():

mydt <- data.table(read.table(unz(myzipfilename, myfilename)))
Run Code Online (Sandbox Code Playgroud)

这工作正常,但read.table()大文件速度慢,而fread()无法unz()直接读取连接.我想知道是否有更好的解决方案.

Mir*_*ert 13

看看:用fread读取Ziped CSV文件 为了避免使用tmp文件你可以使用解压缩-p提取文件来管道,没有消息

你可以使用fread这样的语句.

x = fread('unzip -p test/allRequests.csv.zip')
Run Code Online (Sandbox Code Playgroud)

或者用gunzip

x = fread('gunzip -cq test/allRequests.csv.gz')
Run Code Online (Sandbox Code Playgroud)

您也可以使用grep或其他工具.

  • 值得补充的是,当使用预处理命令时,出于安全原因,“data.table”开发人员建议使用“cmd”参数,例如“fread(cmd = 'unzip -p test/allRequests.csv.zip')”。 (3认同)