我正在使用大型数据集进行研究(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文件的经验?
答案 0 :(得分:1)
它可能无法直接解决您的问题,但您可能会发现我的filematrix
包非常有用。相关功能是fm.create.from.text.file
。
如果它适用于您的数据文件,请告诉我。
答案 1 :(得分: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