我正在尝试使用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主人(?)拒绝访问临时文件。如果是这种情况,如何设置临时文件路径以说出解压缩的当前目录?
答案 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)