Требование к памяти, используя `fread ()` для большого вектора столбца - PullRequest
1 голос
/ 19 марта 2019

У меня есть читаемый человеком файл, содержащий 1 миллиард двойных чисел, записанных в одну строку (1 миллиард столбцов).

Сам файл только около 8G, и я использую

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

чтобы загрузить их в сеанс R. Сценарий всегда будет «убит», и большая часть информации, которую я получаю от showProgress, составляет

* перехватил segfault * адрес 0x7efc7bed2010, причина - память не сопоставляются '

Я загружал намного большие файлы (необработанный размер), используя тот же подход в прошлом, но, вероятно, в «матричной форме» и с меньшим количеством столбцов. Я предполагаю, что data.table нужно хранить 1 миллиард имен столбцов, что стоит много памяти ... Это правильно?

  1. Нет ли способа fread использовать прямой вектор в строке (в отличие от транспонирования после чтения)?
  2. Могут ли эти данные быть восстановлены или мне нужно переписать их как вектор строки?

1 Ответ

0 голосов
/ 19 марта 2019

fread одиночный ряд как один столбец?

вот, пожалуйста.

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...