Call a function with a vectorized input in parallel, where the function is computationally intensive.
1 2  doCallParallel(fun, x, ..., njobs = parallel::detectCores()  1,
random.seed = NULL)

fun 
A function, or a text string with the name of the function, whose first argument is a vector and returns a corresponding vector 
x 
A vector of values that is the first argument to 
njobs 
The number of parallel jobs to spawn using 
random.seed 
If a numeric value is provided, 
... 
Additional named arguments for 
This function is a parallelized wrapper for do.call
designed for the case where fun
is
computationally intensive. Each element of x
is evaluated
independently of the other elements of x
. Thus, fun(c(x1,x2))
must be equivalent
to c(fun(x1), fun(x2))
in order for doCallParallel
to work properly.
The same result that would be had by calling fun(x, ...)
, except calculated in parallel
Landon Sego
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15  # Get a vector of x's
x < rnorm(18, mean = 2, sd = 2)
# 2 cores
y1 < doCallParallel("pnorm", x, mean = 2, sd = 2, njobs = 2)
# 2 cores and randomization
y2 < doCallParallel(pnorm, x, mean = 2, sd = 2, njobs = 2, random.seed = 1)
# Without using doCallParallel()
y3 < pnorm(x, mean = 2, sd = 2)
# Comparisons
identical(y1, y2)
identical(y1, y3)

Questions? Problems? Suggestions? Tweet to @rdrrHQ or email at ian@mutexlabs.com.
All documentation is copyright its authors; we didn't write any of that.