Захват параллельных типов вывода R: альтернативы bigstatsr, которые поддерживают tibble, такие как матрица, и различные типы переменных?
Раньше я использовал bigstatsr
для хранения вычисленных значений (double).
Эти значения были вычислены параллельно с использованием doParallel
пакет.
Теперь я пытаюсь использовать bigstatsr
для хранения более сложных предметов. Обычно в виде списка.
И только сейчас замечаю, что bigstatsr
не поддерживаю list
объект или даже character
тип...
Есть ли альтернативы, которые я могу использовать для хранения list
объекты?
Ниже воспроизводимый пример. Заметить, чтоbigMatrice_sepalLength
может фиксировать числовые значения, но bigMatrice_sepalLengthWidth
не может захватить список числовых значений и bigMatrice_species
не может хранить символьные значения.
В моем фактическом случае использования мне нужно было бы распараллелить некоторые модели прогнозирования.
Обычно выходными данными являются список значений (исторические, прогнозные), список моделей, список параметров моделей и т. Д.
Раньше я мог использовать bigstatsr, потому что я сохранял только прогнозные значения. Хотя на этот раз я хочу захватить и другую информацию.
Спасибо!
library(foreach)
library(doParallel)
bigMatrice_sepalLength <- bigstatsr::FBM(nrow=nrow(iris),ncol=1)
bigMatrice_sepalLengthWidth <- bigstatsr::FBM(nrow=nrow(iris),ncol=1)
bigMatrice_species <- bigstatsr::FBM(nrow=nrow(iris),ncol=1)
cl_start <- Sys.time()
# set nb core to use
#no_cores <- detectCores() - 3
no_cores <- 1
# create cluster
cl <- makeCluster(no_cores, outfile = "")
# prepare cluster
registerDoParallel(cl)
foreach(i = 1:nb_forecast_level, .combine=cbind) %dopar% {
bigMatrice_sepalLength[i,] <- iris[i,1]
bigMatrice_sepalLengthWidth[i,] <- iris[i,c(1,2)] %>% list()
bigMatrice_species[i,] <- iris[i,5]
}
stopCluster(cl)
stopImplicitCluster()
cl_end <- Sys.time()
(cl_runtime <- cl_end - cl_start)
as_tibble(bigMatrice_sepalLength[])
as_tibble(bigMatrice_sepalLengthWidth[])
as_tibble(bigMatrice_species[])
Полученные результаты
> as_tibble(bigMatrice_sepalLength[])
# A tibble: 150 x 1
value
<dbl>
1 5.1
2 4.9
3 4.7
4 4.6
5 5
6 5.4
7 4.6
8 5
9 4.4
10 4.9
# … with 140 more rows
> as_tibble(bigMatrice_sepalLengthWidth[])
# A tibble: 150 x 1
value
<dbl>
1 0
2 0
3 0
4 0
5 0
6 0
7 0
8 0
9 0
10 0
# … with 140 more rows
> as_tibble(bigMatrice_species[])
# A tibble: 150 x 1
value
<dbl>
1 0
2 0
3 0
4 0
5 0
6 0
7 0
8 0
9 0
10 0
# … with 140 more rows