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;使用 colClasses 和 fread 的自定义数据强制;命名管道