The hardware and bandwidth for this mirror is donated by dogado GmbH, the Webhosting and Full Service-Cloud Provider. Check out our Wordpress Tutorial.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]dogado.de.

Logging to File

Passing arguments to callr::r_bg()

{bakerrr} uses callr::r_bg() under the hood. All r_bg() arguments can be passed via the bg_args argument in bakerrr()

Setup a sample function and its args_list

# Example: Data processing pipeline
process_data <- function(dataset_id, filter_col, threshold) {
  # Input validation
  if (is.null(dataset_id) || !is.character(dataset_id)) {
    stop("Invalid or missing dataset_id: must be character and non-null.")
  }
  if (!filter_col %in% c("score", "value", "rating")) {
    stop("filter_col must be one of 'score', 'value', or 'rating'.")
  }
  if (!is.numeric(threshold) || threshold <= 0) {
    stop("threshold must be positive numeric.")
  }

  # Simulate loading data
  set.seed(as.integer(sub("DS_", "", dataset_id))) # Reproducible per job
  n <- sample(100:500, 1)
  data <- tibble::tibble(
    id = seq_len(n),
    score = round(runif(n, 0, 100)),
    value = round(rnorm(n, 50, 15)),
    rating = sample(1:10, n, replace = TRUE)
  )

  # Apply filter
  filtered <- dplyr::filter(data, data[[filter_col]] >= threshold)

  Sys.sleep(runif(1, 0.5, 2))  # Simulate processing time

  list(
    dataset_id = dataset_id,
    total_records = n,
    filtered_records = nrow(filtered),
    filter_applied = paste(filter_col, ">=", threshold),
    timestamp = Sys.time(),
    preview = head(filtered, 3)
  )
}

# Generate robust argument sets
set.seed(42)
args_list <- purrr::map(1:12, ~ list(
  dataset_id = paste0("DS_", .x),
  filter_col = sample(c("score", "value", "rating"), 1),
  threshold = sample(50:95, 1)
))

# Add intentional error cases
args_list[[5]] <- list(
  dataset_id = NULL,         # error: dataset_id missing
  filter_col = "score",
  threshold = 75
)
args_list[[7]] <- list(      # error: invalid filter_col
  dataset_id = "DS_7",
  filter_col = "unknown_col",
  threshold = 80
)

args_list[[9]] <- list(      # error: invalid threshold
  dataset_id = "DS_9",
  filter_col = "score",
  threshold = -15
)

Write outputs and errors to file while running jobs

When initiating the bakerrr with bakerrr::bakerrr(), pass any callr::r_bg() arguments to bg_args argument as below:

stirr_job <- bakerrr::bakerrr(
  fun = process_data,
  args_list = args_list,
  n_daemons = min(4, length(args_list)),

  # Note how parameters are passed to callr::r_bg()
  bg_args = list(
    stdout = "bakerrr_out.log",
    stderr = "bakerrr_err.log"
  )
)

# Execute with real-time monitoring
stirr_job <- stirr_job |>
  bakerrr::run_jobs(wait_for_results = TRUE)

# Get results
stirr_job@results

These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.
Health stats visible at Monitor.