Используя пакет ff из R , я импортировал csv-файл в объект ffdf, но был удивлен, обнаружив, что этот объект занимает около 700 МБ оперативной памяти.Разве ff не должен хранить данные на диске, а не в оперативной памяти?Я сделал что-то неправильно?Я новичок в R. Любые советы приветствуются.Спасибо.
> training.ffdf <- read.csv.ffdf(file="c:/temp/training.csv", header=T)
> # [Edit: the csv file is conceptually a large data frame consisting
> # of heterogeneous types of data --- some integers and some character
> # strings.]
>
> # The ffdf object occupies 718MB!!!
> object.size(training.ffdf)
753193048 bytes
Warning messages:
1: In structure(.Internal(object.size(x)), class = "object_size") :
Reached total allocation of 1535Mb: see help(memory.size)
2: In structure(.Internal(object.size(x)), class = "object_size") :
Reached total allocation of 1535Mb: see help(memory.size)
>
> # Shouldn't biglm be able to process data in small chunks?!
> fit <- biglm(y ~ as.factor(x), data=training.ffdf)
Error: cannot allocate vector of size 18.5 Mb
Редактировать: Я последовал совету Томми, пропустил вызов object.size и посмотрел на диспетчер задач (я запускал R на машине с Windows XP с 4 ГБ ОЗУ),Я сохранил объект, закрыл R, снова открыл его и загрузил данные из файла.Проблема преобладала:
> library(ff); library(biglm)
> # At this point RGui.exe had used up 26176 KB of memory
> ffload(file="c:/temp/trainingffimg")
> # Now 701160 KB
> fit <- biglm(y ~ as.factor(x), data=training.ffdf)
Error: cannot allocate vector of size 18.5 Mb
Я также пытался
> options("ffmaxbytes" = 402653184) # default = 804782080 B ~ 767.5 MB
, но после загрузки данных RGui по-прежнему использовал более 700 МБ памяти, а регрессия biglm по-прежнему выдавала ошибку.