以前我用来bigstatsr
存储计算值(双精度)。
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