# Call a function with a vectorized input in parallel

### Description

Call a function with a vectorized input in parallel, where the function is computationally intensive.

### Usage

1 2 | ```
doCallParallel(fun, x, ..., njobs = parallel::detectCores() - 1,
random.seed = NULL)
``` |

### Arguments

`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 |

### Details

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.

### Value

The same result that would be had by calling `fun(x, ...)`

, except calculated in parallel

### Author(s)

Landon Sego

### Examples

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)
``` |