【问题标题】:Reading large csv file with missing data using bigmemory package in R使用 R 中的 bigmemory 包读取缺少数据的大型 csv 文件
【发布时间】:2015-11-19 19:12:30
【问题描述】:

我在研究中使用大型数据集(4.72GB),我发现 R 中的“bigmemory”包可以处理大型数据集(最大范围为 10GB)。但是,当我使用 read.big.matrix 读取 csv 文件时,出现以下错误:

> x <- read.big.matrix("x.csv", type = "integer", header=TRUE, backingfile="file.bin", descriptorfile="file.desc")

Error in read.big.matrix("x.csv", type = "integer", header = TRUE,  
: Dimension mismatch between header row and first data row.

我认为问题在于 csv 文件未满,即多个单元格中缺少值。我尝试删除 header = TRUE 但随后 R 中止并重新启动会话。

有没有人有使用 read.big.matrix 读取数据缺失的大型 csv 文件的经验?

【问题讨论】:

    标签: r csv r-bigmemory


    【解决方案1】:

    它可能无法直接解决您的问题,但您可能会发现我的包filematrix 很有用。相关函数为fm.create.from.text.file

    如果它适用于您的数据文件,请告诉我。

    【讨论】:

      【解决方案2】:

      您在https://cran.r-project.org/web/packages/bigmemory/bigmemory.pdf 上查看过 bigmemory PDF 吗?

      上面写的很清楚。

      write.big.matrix(x, 'IrisData.txt', col.names=TRUE, row.names=TRUE)
      y <- read.big.matrix("IrisData.txt", header=TRUE, has.row.names=TRUE)
      
      # The following would fail with a dimension mismatch:
      if (FALSE) y <- read.big.matrix("IrisData.txt", header=TRUE)
      

      基本上,错误意味着 CSV 文件中有一个带有行名的列。如果不通过has.row.names=TRUE,bigmemory 会将行名视为单独的列,如果没有标题,则会出现不匹配的情况。

      我个人发现data.table包对于处理大数据集的情况更有用,YMMV

      【讨论】:

      • 但 data.table 无法处理大于内存的数据集。
      猜你喜欢
      • 1970-01-01
      • 2013-03-10
      • 2022-01-13
      • 2016-04-26
      • 1970-01-01
      • 2016-02-04
      • 2018-08-28
      • 2014-04-15
      • 2018-10-17
      相关资源
      最近更新 更多