I haben folgende Funktion my_func
, die Parameter in einem Datenrahmen params
und nehmen eine zusätzliche param als ein anderer df unabhängig indf
wie die Liste von Datenrahmenform zu bewahren, nachdem parallel unter Verwendung gelten
library(tidyverse)
my_func <- function (x=NULL,y=NULL,z=NULL, indf=NULL) {
out <- (x * y *z)
out * indf
}
params <- tribble(
~x, ~y, ~z,
5, 1, 1,
10, 5, 3,
-3, 10, 5
)
indf <- tribble(
~A, ~B, ~C,
100, 10, 1,
1000, 300, 3,
20, 10, 5
)
params %>%
pmap(my_func, indf=indf)
Es produziert die folgende Liste von Datenrahmen:
#> [[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
Was ich dann tun möchte, ist die obige Funktion mit parallel Paket auszuführen. Ich habe es dieses way:
library(parallel)
params %>%
lift(mcmapply, mc.cores = detectCores() - 1)(FUN = my_func, indf=indf)
Aber es ergibt sich folgende Matrix statt.
Wie kann ich parallel verwenden, so dass es eine Liste von Datenrahmen wie die ursprüngliche Ausgabe erzeugt?