Поскольку память является премиальной и все R работают в ОЗУ, избегайте хранения больших вспомогательных объектов data.table
и h20
в вашей глобальной среде. Подумайте о настройке функции для создания списка для компиляции, когда временные объекты удаляются, когда функция выходит за рамки. В идеале вы должны создавать свои h2o
объекты непосредственно из источника файла:
# BUILD LIST OF H20 OBJECTS WITHOUT HELPER COPIES
h2o_list <- lapply(list_of_files, function(f) as.h2o(data.table::fread(f))[-1])
# h2o_list <- lapply(list_of_files, function(f) h2o.importFile(f)[-1])
# CBIND ALL H20 OBJECTS
test.h2o <- do.call(h2o.cbind, h2o_list)
Или даже комбинировать обе строки с именованной функцией, а не с анонимной функцией. Затем после обработки остается только конечный объект.
build_h2o <- function(f) as.h2o(data.table::fread(f))[-1])
# build_h2o <- function(f) h2o.importFile(f)[-1]
test.h2o <- do.call(h2o.cbind, lapply(list_of_files, build_h2o))
Расширьте функцию с if
для некоторых наборов данных, которые должны сохранять первый столбец или нет.
build_h2o <- function(f) {
if (grepl("lai|lu1000|lu250|msl", f)) { tmp <- fread(f)[-1] }
else { tmp <- fread(f) }
return(as.h2o(tmp))
}
Наконец, если возможно, используйте data.table
методы, такие как cbindlist
:
final_dt <- cbindlist(lapply(list_of_files, function(f) fread(f)[-1]))
test.h2o <- as.h2o(final_dt)
rm(final_dt)
gc()