使用R

时间:2015-11-19 19:12:31

标签: r csv r-bigmemory

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

2 个答案:

答案 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