# https://github.com/tidyverse/purrr/issues/194
conv_pois_norm = function(x, l = l, mean = mean, sd = sd) {
return(x + sum(rnorm(n = rpois(n = 1, lambda = l), mean = mean, sd = sd)))
}
test_func<-function(x,y,z){
return(x*y+z)
}
suppressPackageStartupMessages(library(purrr))
suppressPackageStartupMessages(library(future))
suppressPackageStartupMessages(library(tibble))
suppressPackageStartupMessages(library(dplyr))
n_simul = 20
mean = 10
sd = 20
l = 10
conv_pois_norm(10, l, mean, sd)
## [1] 178.7025
x <- tibble(x = rep(0, n_simul))
x%>%mutate(myFuture=map(x,~future(conv_pois_norm(.x,l,mean,sd))))
## # A tibble: 20 x 2
## x myFuture
## <dbl> <list>
## 1 0 <S3: SequentialFuture>
## 2 0 <S3: SequentialFuture>
## 3 0 <S3: SequentialFuture>
## 4 0 <S3: SequentialFuture>
## 5 0 <S3: SequentialFuture>
## 6 0 <S3: SequentialFuture>
## 7 0 <S3: SequentialFuture>
## 8 0 <S3: SequentialFuture>
## 9 0 <S3: SequentialFuture>
## 10 0 <S3: SequentialFuture>
## 11 0 <S3: SequentialFuture>
## 12 0 <S3: SequentialFuture>
## 13 0 <S3: SequentialFuture>
## 14 0 <S3: SequentialFuture>
## 15 0 <S3: SequentialFuture>
## 16 0 <S3: SequentialFuture>
## 17 0 <S3: SequentialFuture>
## 18 0 <S3: SequentialFuture>
## 19 0 <S3: SequentialFuture>
## 20 0 <S3: SequentialFuture>
plan(multiprocess)
x1 <- x %>%
mutate(myFuture = map(x, ~future(conv_pois_norm(.x, l, mean, sd)))) %>%
mutate(myResult = map_dbl(myFuture, ~value(.x))) # Wait for Resolved
x2=x %>%
mutate(myFuture = map(x, function(x) future(conv_pois_norm(x, l, mean, sd)))) %>%
mutate(myResult = map_dbl(myFuture, function(x) value(x))) # Wait for Resolved
x1
## # A tibble: 20 x 3
## x myFuture myResult
## <dbl> <list> <dbl>
## 1 0 <S3: MultisessionFuture> 24.124709
## 2 0 <S3: MultisessionFuture> 133.147279
## 3 0 <S3: MultisessionFuture> 77.259909
## 4 0 <S3: MultisessionFuture> 62.006424
## 5 0 <S3: MultisessionFuture> 167.232376
## 6 0 <S3: MultisessionFuture> 126.943235
## 7 0 <S3: MultisessionFuture> 235.647280
## 8 0 <S3: MultisessionFuture> 117.916664
## 9 0 <S3: MultisessionFuture> 147.930188
## 10 0 <S3: MultisessionFuture> 133.506784
## 11 0 <S3: MultisessionFuture> 6.515277
## 12 0 <S3: MultisessionFuture> -1.225545
## 13 0 <S3: MultisessionFuture> 42.013199
## 14 0 <S3: MultisessionFuture> 183.825905
## 15 0 <S3: MultisessionFuture> 197.375499
## 16 0 <S3: MultisessionFuture> 231.904820
## 17 0 <S3: MultisessionFuture> 220.305353
## 18 0 <S3: MultisessionFuture> 77.828652
## 19 0 <S3: MultisessionFuture> 164.860559
## 20 0 <S3: MultisessionFuture> -41.279588
x2
## # A tibble: 20 x 3
## x myFuture myResult
## <dbl> <list> <dbl>
## 1 0 <S3: MultisessionFuture> 146.600732
## 2 0 <S3: MultisessionFuture> 15.558313
## 3 0 <S3: MultisessionFuture> 46.501116
## 4 0 <S3: MultisessionFuture> 69.797726
## 5 0 <S3: MultisessionFuture> 8.218662
## 6 0 <S3: MultisessionFuture> 105.904728
## 7 0 <S3: MultisessionFuture> 86.445021
## 8 0 <S3: MultisessionFuture> 36.705090
## 9 0 <S3: MultisessionFuture> 118.391865
## 10 0 <S3: MultisessionFuture> 58.969942
## 11 0 <S3: MultisessionFuture> 56.994735
## 12 0 <S3: MultisessionFuture> 94.765904
## 13 0 <S3: MultisessionFuture> 97.925786
## 14 0 <S3: MultisessionFuture> -12.531112
## 15 0 <S3: MultisessionFuture> 67.223406
## 16 0 <S3: MultisessionFuture> 33.575923
## 17 0 <S3: MultisessionFuture> 75.709936
## 18 0 <S3: MultisessionFuture> 23.637841
## 19 0 <S3: MultisessionFuture> 112.495822
## 20 0 <S3: MultisessionFuture> 40.463457
df<-tibble(x=seq(1,10),y=seq(10,19),z=seq(3,12))
df1=df%>%mutate(ff=pmap(list(x,y,z),function(x,y,z) test_func(x,y,z) ))%>%mutate(ff=as.numeric(ff))
df2=df%>%mutate(myFuture=pmap(list(x,y,z), function(x,y,z) future(test_func(x,y,z)) ))%>%
mutate(myResult=map_dbl(myFuture, function(x) value(x) ))
df1
## # A tibble: 10 x 4
## x y z ff
## <int> <int> <int> <dbl>
## 1 1 10 3 13
## 2 2 11 4 26
## 3 3 12 5 41
## 4 4 13 6 58
## 5 5 14 7 77
## 6 6 15 8 98
## 7 7 16 9 121
## 8 8 17 10 146
## 9 9 18 11 173
## 10 10 19 12 202
df2
## # A tibble: 10 x 5
## x y z myFuture myResult
## <int> <int> <int> <list> <dbl>
## 1 1 10 3 <S3: MultisessionFuture> 13
## 2 2 11 4 <S3: MultisessionFuture> 26
## 3 3 12 5 <S3: MultisessionFuture> 41
## 4 4 13 6 <S3: MultisessionFuture> 58
## 5 5 14 7 <S3: MultisessionFuture> 77
## 6 6 15 8 <S3: MultisessionFuture> 98
## 7 7 16 9 <S3: MultisessionFuture> 121
## 8 8 17 10 <S3: MultisessionFuture> 146
## 9 9 18 11 <S3: MultisessionFuture> 173
## 10 10 19 12 <S3: MultisessionFuture> 202