data.table fread错误 - gzip文件 - 设置临时目录

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了data.table fread错误 - gzip文件 - 设置临时目录相关的知识,希望对你有一定的参考价值。

我正在尝试使用data.tables .gz-function读取fread文件。我已经尝试了建议here的语法:

dt = fread("gunzip -c myfile.gz")

但我得到一个详细的错误信息:

Error in fread("gunzip -c myfile.gz") : 
  File is empty: C:UsersMARK~1.MURAppDataLocalTempRtmpIBawPAfile498c1c4114ef
In addition: Warning messages:
1: running command 'C:Windowssystem32cmd.exe /c (gunzip -c myfile.gz) > C:UsersMARK~1.MURAppDataLocalTempRtmpIBawPAfile498c1c4114ef' had status 1 
2: In shell(paste("(", input, ") > ", tt, sep = "")) :
  '(gunzip -c 180227.2101.2017.MRE.csv.gz) > C:UsersMARK~1.MURAppDataLocalTempRtmpIBawPAfile498c1c4114ef' execution failed with error code 1

我的猜测是我的IT主人(?)拒绝访问临时文件。如果是这种情况,如何设置临时文件路径来说出解压缩的当前目录?

答案

由于您使用的是Windows PC,因此您可能无法访问命令行工具,这可能就是原因。

一个可能的解决方案可能是首先解压缩然后用fread读取。以下示例适用于我的Windows VM:

write.csv(mtcars, 'mtcars.csv')
zip('mtcars.csv.zip', 'mtcars.csv')

unzip('mtcars.csv.zip')
fread('mtcars.csv')

对于.gz文件,您可以使用gunzip中的R.utils函数。以下示例适用于我:

write.csv(mtcars, gzfile('mtcars2.csv.gz'))

library(R.utils)
gunzip('mtcars2.csv.gz')
fread('mtcars2.csv')

因此,您可能需要这样的东西:

library(R.utils)
gunzip('myfile.gz')
fread('myfile.csv')
另一答案

尝试read_csv()包中的readr,它自动处理.gz:

dt = as.data.table(read_csv("myfile.gz"))

(或其他read_ *函数,如果它不是csv)

以上是关于data.table fread错误 - gzip文件 - 设置临时目录的主要内容,如果未能解决你的问题,请参考以下文章

data.table::fread 不喜欢第一列中的缺失值

来自 data.table 包的 fread 无法读取小数字

追加多个大data.table;使用 colClasses 和 fread 的自定义数据强制;命名管道

data.table 的 fread() 给出不需要的下载消息

使用包 data.table 中的 fread 一次读取块

data.table fread 可以接受连接吗?