Разделение объекта ffdf

Я использую библиотеки ff и ffbase для управления большим CSV-файлом (~ 40Go и 275e6 наблюдений). Я хотел бы разделить/разбить этот файл в соответствии с одним из его столбцов (который является столбцом фактора).

С обычным фреймом данных я бы сделал что-то вроде этого:

a <- data.frame(rnorm(10000,0,1),
                sample(1:100,10000,replace=T),
                sample(letters,10000,replace = T))
names(a) <- c('V1','V2','V3')
a_partition <- split(a,a$V3)
names(a_partition) <- paste("df",names(a_partition),sep = "_")
list2env(a_partition,globalenv())

но ff и ffbase не имеют функции split. Итак, заглянув в документацию ffbase, я нашел ffdfply и попытался использовать его следующим образом:

ffa <- as.ffdf(a)
ffa_partititon <- ffdfdply(x = ffa,split = ffa$V3)

Увы, я получаю сообщение журнала:

расчет размеров разделения
создание мест разделения
работа над разделением 1/1, извлечение данных в ОЗУ из 26 элементов разделения,
всего 0,00015 ГБ, в то время как максимальный объем
данных, указанных с помощью BATCHBYTES, составляет 0,01999 ГБ
... применение FUN к выбранным данным
Ошибка: аргумент "FUN" отсутствует, значение по умолчанию отсутствует

Я попробовал FUN = as.data.frame (поскольку результатом функции должен быть фрейм данных) безуспешно: это делает ffa_partition копией ffa...

Как я могу разделить мой ffdf?


person G. Lombardo    schedule 20.05.2016    source источник
comment
Привет, если вы посмотрите на справку ffdfapply, вы увидите, что есть третий обязательный аргумент FUN, который вы пропустили в своем вызове, отсюда и сообщение об ошибке. Я бы попробовал FUN=as.data.frame   -  person Eric Lecoutre    schedule 20.05.2016
comment
@Eric Lecoutre: да, я пробовал это, но ничего не делает (буквально возвращает ffdf, который я вставил в запись ...)   -  person G. Lombardo    schedule 22.05.2016


Ответы (1)


Два года спустя, но я считаю, что это делает то, что вам нужно:

result_list <- list()
for(letter in letters){
    result_list[[letter]] <- subset(ffa, V3 == letter)
}
person pedrostrusso    schedule 29.10.2018