大列向量使用`fread()`的内存需求

时间:2019-03-19 01:40:29

标签: r data.table fread

我有一个人类可读的文件,其中包含10亿个double数,它们全部写在一行中(10亿列)。

文件本身只有8G左右,我正在使用

fread("filename.data", sep=" ", header=FALSE, data.table=TRUE, showProgress=TRUE)

将它们加载到R会话中。该脚本将始终被“杀死”,而我从showProgress获得的最多信息是

  

*捕获了段错误* 地址0x7efc7bed2010,导致“内存不   映射的

我过去使用相同的方法加载了更大的文件(原始大小),但可能是以“矩阵形式”并且列较少。我猜想data.table需要存储10亿个列名,这会占用大量内存...这是正确的吗?

  1. 有没有办法fread直接进入行向量(与读取后转置相反)?
  2. 此数据是否可挽回,还是需要将其重写为行向量?

1 个答案:

答案 0 :(得分:0)

将单个行读取为单列?

你去..

library(data.table)

#read using default separators
fread('v1,v2,v2,v3
this, is, a, test
of, fread,one,line')

#      v1    v2  v2   v3
# 1: this    is   a test
# 2:   of fread one line

#read one column per line/row
fread('v1,v2,v2,v3
this, is, a, test
      of, fread,one,line', sep = "", header = FALSE)

#                    V1
# 1:        v1,v2,v2,v3
# 2:  this, is, a, test
# 3: of, fread,one,line