【问题标题】:Decompress gz file using R使用R解压gz文件
【发布时间】:2011-08-11 11:49:13
【问题描述】:

我过去曾使用?unzip 来获取使用 R 的压缩文件的内容。这一次,我很难从 .gz 文件中提取文件,该文件可以在 here 找到。

我尝试了?gzfile?gzcon,但无法让它工作。您能提供的任何帮助将不胜感激。

【问题讨论】:

    标签: r gzip


    【解决方案1】:

    这是一个有效的示例,可以帮助说明 gzfile()gzcon() 的用途

    foo <- data.frame(a=LETTERS[1:3], b=rnorm(3))
    foo
    #  a        b
    #1 A 0.586882
    #2 B 0.218608
    #3 C 1.290776
    write.table(foo, file="/tmp/foo.csv")
    system("gzip /tmp/foo.csv")             # being very explicit
    

    现在文件已经写好了,不要隐式使用file(),而是使用gzfile()

    read.table(gzfile("/tmp/foo.csv.gz"))   
    #  a        b
    #1 A 0.586882
    #2 B 0.218608
    #3 C 1.290776
    

    您指向的文件是一个压缩的 tar 存档,据我所知,R 本身没有与 tar 存档的接口。这些通常用于分发源代码——例如用于 R 包和 R 源代码。

    【讨论】:

    • 可以用fread{data.table} 做到这一点吗?到目前为止,我尝试过但没有成功
    • 这很明显但没有用,因为 data.table 不能使用该流。
    • 这很有用。它的标准启发式尝试在三个不同的位置读取,这需要您无法在流上进行的向前/向后定位。我曾经寻求过疯狂的支持,并认为我看到了“不”,但也许这已经改变了。
    • 当前版本的data.table 实际上原生支持csv.gz(不需要zcat
    • 现在应该可以工作了(+9 年后)library(data.table) library(R.utils) d
    【解决方案2】:

    要在 R 中取消 gz 文件,您可以这样做

    library(R.utils)
    gunzip("file.gz", remove=FALSE)
    

    gunzip("file.gz")
    

    但是您会得到默认 (remove=TRUE) 行为,其中输入文件在完全创建并关闭输出文件后被删除。

    【讨论】:

    • 这就是我想要的。注意:NOTE: The default (remove=TRUE) behavior is that the input file is removed after that the output file is fully created and closed. - 见?gunzip
    【解决方案3】:

    如果你真的想解压文件,只需使用支持gzipuntar函数。 例如:

    untar('chadwick-0.5.3.tar.gz')
    

    【讨论】:

      【解决方案4】:

      http://blog.revolutionanalytics.com/2009/12/r-tip-save-time-and-space-by-compressing-data-files.html

      R 在最新版本 (2.10) 中为某些类型的压缩文件添加了透明解压缩。如果您使用 bzip2、xvz 或 gzip 压缩文件,则可以将它们读入 R 中,就像它们是纯文本文件一样。您应该有正确的文件扩展名。

      命令...

      myData <- read.table('myFile.gz')  
      

      #gzip 压缩文件具有“gz”扩展名

      就像“myFile.gz”是原始文本文件一样工作。

      【讨论】:

      • 除非您指定 colClasses 参数,否则它确实有效。如果你添加 myData
      【解决方案5】:
      library(vroom)
      columns3 = c('A', 'B',...) ## define column names
      Data1<- vroom(".../XXX.tsv",col_names = columns3)
      

      tsv.gz 配合得很好

      【讨论】:

        猜你喜欢
        • 2014-07-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-11-22
        • 1970-01-01
        相关资源
        最近更新 更多