Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 使用并行应用后如何保存数据帧表单列表_R_Parallel Processing_Tidyverse - Fatal编程技术网

R 使用并行应用后如何保存数据帧表单列表

R 使用并行应用后如何保存数据帧表单列表,r,parallel-processing,tidyverse,R,Parallel Processing,Tidyverse,我有以下函数my_func,它接受存储在数据帧params中的参数,并将一个额外的参数作为另一个独立的dfindf 库(tidyverse) 我的职能1500 50 5 #> 2 5000 1500 15 #> 3 100 50 25 #> #> [[2]] #>A、B、C #> 1 15000 1500 150 #> 2 150000 45000 450 #> 3 3000 1500 750 #> #> [[3]] #>A、B、C #> 1 -15000 -1500

我有以下函数
my_func
,它接受存储在数据帧
params
中的参数,并将一个额外的参数作为另一个独立的df
indf


库(tidyverse)
我的职能1500 50 5
#> 2 5000 1500 15
#> 3  100   50 25
#> 
#> [[2]]
#>A、B、C
#> 1  15000  1500 150
#> 2 150000 45000 450
#> 3   3000  1500 750
#> 
#> [[3]]
#>A、B、C
#> 1  -15000  -1500 -150
#> 2 -150000 -45000 -450
#> 3   -3000  -1500 -750
然后我要做的是用包运行上面的函数。我是这样做的:

库(并行)
参数%>%
lift(mcmapply,mc.cores=detectCores()-1)(FUN=my_func,indf=indf)
但它会生成以下矩阵

[,1][,2][,3]
[1,]  500  1500 -150
[2,] 5000 45000 -450
[3,]  100  1500 -750
如何使用parallel,使其生成数据帧列表(如初始输出)

library(parallel)

nc <- max(detectCores() - 1, 1L)

params %>% 
  lift(mcmapply, SIMPLIFY = FALSE, mc.cores = nc)(FUN = my_func, MoreArgs = list(indf = indf))

# [[1]]
#      A    B  C
# 1  500   50  5
# 2 5000 1500 15
# 3  100   50 25
# 
# [[2]]
#        A     B   C
# 1  15000  1500 150
# 2 150000 45000 450
# 3   3000  1500 750
# 
# [[3]]
#         A      B    C
# 1  -15000  -1500 -150
# 2 -150000 -45000 -450
# 3   -3000  -1500 -750
nc <- max(parallel::detectCores() - 1, 1L)

par_pmap <- function(.l, .f, ..., mc.cores = getOption("mc.cores", 2L)) {
  do.call(
    parallel::mcmapply, 
    c(.l, list(FUN = .f, MoreArgs = list(...), SIMPLIFY = FALSE, mc.cores = mc.cores))
  )
}

library(magrittr)

params %>% 
  par_pmap(my_func, indf = indf, mc.cores = nc)

# [[1]]
#      A    B  C
# 1  500   50  5
# 2 5000 1500 15
# 3  100   50 25
# 
# [[2]]
#        A     B   C
# 1  15000  1500 150
# 2 150000 45000 450
# 3   3000  1500 750
# 
# [[3]]
#         A      B    C
# 1  -15000  -1500 -150
# 2 -150000 -45000 -450
# 3   -3000  -1500 -750