代码之家  ›  专栏  ›  技术社区  ›  Ryan C. Thompson

有办法在R中读写内存文件吗?

  •  7
  • Ryan C. Thompson  · 技术社区  · 14 年前

    我试图用R来分析大的DNA序列文件(fastq文件,每个文件都有几GB),但是这些文件的标准R接口(ShortRead)必须一次读取整个文件。这不适合内存,因此会导致错误。有没有什么方法可以让我一次读取几千行,将它们放入内存文件中,然后使用ShortRead从内存文件中读取?

    我正在寻找类似Perl的IO::Scalar,for R。

    4 回复  |  直到 14 年前
        1
  •  2
  •   Konrad Rudolph    14 年前

    我不太了解R,但你看过 mmap package

        2
  •  2
  •   Ryan C. Thompson    13 年前

    看起来ShortRead很快就会添加一个“FastqStreamer”类来实现我想要的功能。

        3
  •  1
  •   nsheff    13 年前

    好吧,我不知道readFastq是否接受文件以外的东西。。。

    例如,要获得90到100行,可以使用以下命令:

    head file.txt -n 100 | tail -n 10
    

    所以你可以把文件分块读。

        4
  •  1
  •   Ryan C. Thompson    13 年前

    顺便说一下,通常如何在R中执行内存文件(如Perl的IO::Scalar)的答案是 textConnection 功能。遗憾的是,ShortRead包不能将textConnection对象作为输入来处理,因此,虽然我在将一个小文件分块读取到内存中的文件中,然后对这些文件进行逐位解析的问题上所表达的想法,对于许多应用程序来说肯定是可能的,但不适用于特定的应用程序,因为ShortRead不喜欢textConnections。所以解决方案是上面描述的FastqStreamer类。