1

我正在使用大型数据集进行研究(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 文件的经验?

4

2 回答 2

1

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

请让我知道它是否适用于您的数据文件。

于 2015-11-19T19:47:22.387 回答
0

您是否在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

于 2015-11-19T19:58:37.973 回答