R/addons-caret.R

Defines functions append_transpilers_for_caret

# caret::train(...) =>
#
# with(doFuture::registerDoFuture(flavor = "%dofuture%"), {
#   options(future.disposable = <future arguments>)
#   caret::train(...)
# })
#
append_transpilers_for_caret <- function() {
  transpilers <- make_package_transpilers("caret", FUN = function(fcn, name) {
    ## nnnControl()
    if ("allowParallel" %in% names(formals(fcn))) {
      if (name == "nearZeroVar") {
        list(
          label = sprintf("caret::%s() ~> caret::%s()", name, name),
          transpiler = make_futurize_for_doFuture(defaults = list(seed = TRUE), args = list(foreach = TRUE))
        )
      }
    } else {
      ## nnn() -> nnnControl()
      nameControl <- sprintf("%sControl", name)
      if (exists(nameControl, mode = "function", envir = getNamespace("caret"), inherits = FALSE)) {
        fcnControl <- get(nameControl, mode = "function", envir = getNamespace("caret"), inherits = FALSE)
        if ("allowParallel" %in% names(formals(fcnControl))) {
          list(
            label = sprintf("caret::%s() ~> caret::%s()", name, name),
            transpiler = make_futurize_for_doFuture(defaults = list(seed = TRUE))
          )
        }
      }
    }
  })

  append_transpilers("futurize::add-on", transpilers)

  ## Return required packages
  c("caret", "doFuture")
}

Try the futurize package in your browser

Any scripts or data that you put into this service are public.

futurize documentation built on March 19, 2026, 1:07 a.m.