如何使用fread读取R中的gz文件?

pyt*_*ist 3 windows gzip r fread

我在Windows机器上尝试加快read.table步骤。我的文件都是.gz。

x=paste("gzip -c ",filename,sep="")
phi_raw = fread(x)

Error in fread(x) : 
Run Code Online (Sandbox Code Playgroud)

无法理解错误。对我来说有点神秘。

不像zx8754所建议的那样重复:专门在fread上下文中使用。尽管fread dows没有对gzip的本机支持,但是这种范例应该可以工作。参见http://www.molpopgen.org/coding/datatable.html

更新资料

根据下面的建议使用系统会产生更长的错误消息-尽管我仍然被卡住。

Error in fread(system(x)) : 

  'input' must be a single character string containing a file name, a command, full path to a file, a URL starting 'http[s]://', 'ftp[s]://' or 'file://', or the input data itself

In addition: Warning message:


running command 'gzip -c D:/x_.gz' had status 1
Run Code Online (Sandbox Code Playgroud)

更新资料

使用gunzip运行,如下所示:

Error in fread(system(x)) : 

  'input' must be a single character string containing a file name, a command, full path to a file, a URL starting 'http[s]://', 'ftp[s]://' or 'file://', or the input data itself

In addition: Warning message:

running command 'gunzip -c D:/XX_.gz' had status 127
Run Code Online (Sandbox Code Playgroud)

注意不同的状态

Geo*_*nza 7

data.table现在支持使用该fread函数直接读取 .gz 文件,前提是R.utils是安装软件包。

正如this answer to a similar question中所建议的,您可以简单地运行以下命令:

library(data.table)
phi_raw <- fread("filename.gz")
Run Code Online (Sandbox Code Playgroud)


jmu*_*amp 5

我经常在Windows上将gzip与fread一起使用。它在不解压缩的情况下读取文件。我会尝试使用gzip命令添加-d选项。具体来说,在您的代码中,尝试x=paste("gzip -dc ",filename,sep="")。这是可在我的计算机上运行的可复制示例:

df <- data.frame(x = 1:10, y = letters[1:10])
write.table(df, 'df.txt', row.names = F, quote = F, sep = '\t')
system("which gzip")
system("gzip df.txt")
data.table::fread("gzip -dc df.txt")
Run Code Online (Sandbox Code Playgroud)

这是我的sessionInfo()

R version 3.3.1 (2016-06-21)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 7 x64 (build 7601) Service Pack 1

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

loaded via a namespace (and not attached):
[1] rsconnect_0.4.3  tools_3.3.1      data.table_1.9.6 chron_2.3-47 
Run Code Online (Sandbox Code Playgroud)

我已经在Windows上成功使用gzip,而没有使用Rtools(https://cran.r-project.org/bin/windows/Rtools/)和Gow(https://github.com/)将解压缩的文件添加到硬盘中bmatzelle / gow / wiki)。如果上面的可复制示例对您不起作用,请使用which gzipwhich gunzip命令查看正在运行的确切.exe。如果不是Rtools或Gow,则可以尝试安装这两个工具之一,然后再次尝试可复制的示例。