# internal function not to be called by users
# stop function that doesn't print call
stop2 <- function (...)
{
stop(..., call. = FALSE)
}
# internal function, not to be called by users. It is a modified version of pbapply::pblapply
# that allows to define internally if progress bar would be used (pbapply::pblapply uses pboptions to do this)
pblapply_phtpspc_int <- function(X, FUN, cl = 1, pbar = TRUE, ...) {
# conver parallel 1 to null
if (cl == 1) cl <- NULL
FUN <- match.fun(FUN)
if (!is.vector(X) || is.object(X))
X <- as.list(X)
if (!length(X))
return(lapply(X, FUN, ...))
if (!is.null(cl)) {
if (.Platform$OS.type == "windows") {
if (!inherits(cl, "cluster"))
cl <- NULL
} else {
if (inherits(cl, "cluster")) {
if (length(cl) < 2L)
cl <- NULL
} else {
if (cl < 2)
cl <- NULL
}
}
}
if (is.null(cl)) {
if (!pbar)
return(lapply(X, FUN, ...))
Split <- pbapply::splitpb(length(X), 1L, nout = 100)
B <- length(Split)
pb <- pbapply::startpb(0, B)
on.exit(pbapply::closepb(pb), add = TRUE)
rval <- vector("list", B)
for (i in seq_len(B)) {
rval[i] <- list(lapply(X[Split[[i]]], FUN, ...))
pbapply::setpb(pb, i)
}
} else {
if (inherits(cl, "cluster")) {
PAR_FUN <- parallel::parLapply
if (pbar)
return(PAR_FUN(cl, X, FUN, ...))
Split <- pbapply::splitpb(length(X), length(cl), nout = 100)
B <- length(Split)
pb <- pbapply::startpb(0, B)
on.exit(pbapply::closepb(pb), add = TRUE)
rval <- vector("list", B)
for (i in seq_len(B)) {
rval[i] <- list(PAR_FUN(cl, X[Split[[i]]], FUN,
...))
pbapply::setpb(pb, i)
}
} else {
if (!pbar)
return(parallel::mclapply(X, FUN, ..., mc.cores = as.integer(cl)))
Split <- pbapply::splitpb(length(X), as.integer(cl), nout = 100)
B <- length(Split)
pb <- pbapply::startpb(0, B)
on.exit(pbapply::closepb(pb), add = TRUE)
rval <- vector("list", B)
for (i in seq_len(B)) {
rval[i] <- list(parallel::mclapply(X[Split[[i]]],
FUN, ..., mc.cores = as.integer(cl)))
pbapply::setpb(pb, i)
}
}
}
rval <- do.call(c, rval, quote = TRUE)
names(rval) <- names(X)
rval
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.