2016-05-29 74 views
0

我正尝试使用read.big.matrix从包中以类似于Vignette for bigmemory的方式加载689.4 MB csv。R bigmemory将不会读取大的csv文件

暗角代码:

library(bigmemory) 
library(biganalytics) 
x <- read.big.matrix("airline.csv", type="integer", header=TRUE, 
     backingfile="airline.bin", 
     descriptorfile="airline.desc", 
     extraCols="Age") 

每从42-注释,我删除使用命令行上切cut -d, -f9,11,17,18,23 --complement 2008.csv > 2008cut.csv

然后我除去任何的NA的值,利用在数据中发现的因子变量sed sed -i 's/NA/0/g' 2008cut.csv即使有那些预处理步骤,我也会收到相同的错误。

我的代码:

#This works 
x <- read.csv("~/Downloads/2008cut.csv",header=T) 
dim(y) 
#[1] 7009728  29 
length(complete.cases(x)) 
#[1] 7009728 

library(bigmemory) 
library(biganalytics) 
#This errors out 
data <- read.big.matrix("~/Downloads/2008cut.csv", 
      type="integer", header=TRUE) 

试图运行read.big.matrix时,我收到以下错误:

Warning: stack imbalance in '.Call', 31 then 32 
Warning: stack imbalance in '{', 28 then 29 
Warning: stack imbalance in '-', 23 then 24 
Warning: stack imbalance in '-', 22 then 23 
Warning: stack imbalance in '<-', 20 then 21 
Error in big.matrix(nrow = numRows, ncol = createCols, type = type, 
dimnames = list(rowNames, : 
    A big.matrix must have at least one row and one column 

我已经发现有这个问题别人,而是他们有mixed datasimilar problem但没有回应。在我搜索的某个时候,邮件列表中的某个人询问用户是否可以运行类似x <- big.matrix(nrow=1000,ncol=10)的内容来确保bigmemory一般工作。 I am能够运行该代码并生成big.matrix。

任何指导将不胜感激!

软件详细信息:

  • 数据:2008 File
  • R:3.2.3
  • OS:x86_64的-PC-Linux的GNU
  • bigmemory:4.5.19
  • biganalytics:1.1 .14
+0

你的问题是内存限制的问题还是你只是想提高阅读'.csv'文件的速度? –

+0

链接页面上文件结构的文档表明,为该文件选择“整数”将不会成功。一些列显然不是整数。 –

+0

@RafaelPereira我想更好地了解bigmemory库及其应用程序。我正在使用32 GB的RAM,因此该文件适合内存,但我想在bigmemory框架下探索数据。 @ 42-好点。我最初尝试与亚马逊文件。即使在使用'cut -d,-f9,11,17,18,23 --complement 2008.csv> 2008cut.csv'去除因子变量之后,我收到了同样的错误: - \ –

回答

1

对于读大文件,我建议使用fread来自R data.table包。

+0

这不解决问题,是吗? –

+1

看起来像生成的表使用biglm工具,但不是bigkmeans。 fread似乎将整个文件加载到内存中,而bigmemory会将指针存储在内存中。 –