0

我正在尝试使用read.big.matrixRbiganalytics包以类似于Vignette for bigmemory的方式加载 689.4 MB 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 删除了因子变量cut -d, -f9,11,17,18,23 --complement 2008.csv > 2008cut.csv

然后,我使用 sed 删除了数据中发现的任何 NA 值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

我发现其他人有这个问题,但他们有混合数据类似问题但没有回应。在我搜索的某个时间点,邮件列表中的某个人询问用户是否可以运行类似的东西x <- big.matrix(nrow=1000,ncol=10)来确保 bigmemory 正常工作。我能够运行该代码并生成一个 big.matrix

任何指导将不胜感激!

软件详情:

  • 数据:2008 年文件
  • R:3.2.3
  • 操作系统:x86_64-pc-linux-gnu
  • 大内存:4.5.19
  • 大分析:1.1.14
4

2 回答 2

1

对于读取大文件,我建议使用freadfrom Rdata.table包。

于 2016-05-29T14:17:46.007 回答
1

使用绝对路径:

absolutePath <- normalizePath("~/Downloads/2008cut.csv")

x <- read.big.matrix(absolutePath, type="integer", header=TRUE,
        backingfile="airline.bin",
        descriptorfile="airline.desc",
        extraCols="Age")
于 2019-11-30T11:41:33.510 回答