Parallel Example in RStudio as run via knitr after being written in R markdown…
library(foreach)
library(parallel)
library(doParallel)
## Loading required package: iterators
demo(sincParallel)
##
##
## demo(sincParallel)
## ---- ~~~~~~~~~~~~
##
## > library(doParallel)
##
## > registerDoParallel()
##
## > # Define a function that creates an iterator that returns subvectors
## > ivector <- function(x, chunks) {
## + n <- length(x)
## + i <- 1
## +
## + nextEl <- function() {
## + if (chunks <= 0 || n <= 0) stop('StopIteration')
## + m <- ceiling(n / chunks)
## + r <- seq(i, length=m)
## + i <<- i + m
## + n <<- n - m
## + chunks <<- chunks - 1
## + x[r]
## + }
## +
## + obj <- list(nextElem=nextEl)
## + class(obj) <- c('abstractiter', 'iter')
## + obj
## + }
##
## > # Define the coordinate grid and figure out how to split up the work
## > x <- seq(-10, 10, by=0.1)
##
## > nw <- getDoParWorkers()
##
## > cat(sprintf('Running with %d worker(s)\n', nw))
## Running with 3 worker(s)
##
## > # Compute the value of the sinc function at each point in the grid
## > z <- foreach(y=ivector(x, nw), .combine=cbind) %dopar% {
## + y <- rep(y, each=length(x))
## + r <- sqrt(x ^ 2 + y ^ 2)
## + matrix(10 * sin(r) / r, length(x))
## + }
##
## > # Plot the results as a perspective plot
## > persp(x, x, z, ylab='y', theta=30, phi=30, expand=0.5, col="lightblue")