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

时间:2018-02-27 12:09:30

标签: r data.table

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

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

但是我收到了一个详细的错误消息:

Error in fread("gunzip -c myfile.gz") : 
  File is empty: C:\Users\MARK~1.MUR\AppData\Local\Temp\RtmpIBawPA\file498c1c4114ef
In addition: Warning messages:
1: running command 'C:\Windows\system32\cmd.exe /c (gunzip -c myfile.gz) > C:\Users\MARK~1.MUR\AppData\Local\Temp\RtmpIBawPA\file498c1c4114ef' had status 1 
2: In shell(paste("(", input, ") > ", tt, sep = "")) :
  '(gunzip -c 180227.2101.2017.MRE.csv.gz) > C:\Users\MARK~1.MUR\AppData\Local\Temp\RtmpIBawPA\file498c1c4114ef' execution failed with error code 1

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

2 个答案:

答案 0 :(得分:3)

当您在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')

答案 1 :(得分:0)

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

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

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