Parallel Simulator
Overview
Perform flexible simulation studies using one or multiple computer cores. The package is set up to be usable on high-performance clusters in addition to being run locally (i.e., see the package vignettes for more information).
Breaking changes / deprecations
- Output rows are now returned in deterministic expanded-design order (sorted by the
idcolumn, which is assigned before the load-balancing shuffle); previously rows came back in randomized order. Theid,errorandmessageoutput columns are now documented. parSim_dt()now takesreplicationsandprogressas its primary arguments (harmonizing its API withparSim()). The oldrepsandprogressbararguments are deprecated: they are still accepted but issue a deprecation warning.- The output columns of
parSim_dt()have been renamed to matchparSim():rep->replicationanderrorMessage->message. Themessagecolumn is nowNA(rather than"") for successful rows.
Show all changes in 0.4.0Hide the rest of the changes in 0.4.0
parSim_dt(write = TRUE)now writes to a temporary file whennameis missing (instead of erroring), reports the path with a message, and returns the results invisibly instead ofNULL.- In both
parSim()andparSim_dt(), design conditions passed via...whose names collide with a function argument (e.g.replications,nCores,progress) now trigger a warning, since they would otherwise silently become a crossed design factor.
New features
parSim_dt()gained thepackagesargument ofparSim()(packages to load on the parallel workers).- New
seedargument inparSim()andparSim_dt(): one L'Ecuyer-CMRG RNG substream is derived per simulation condition, so a seeded simulation is fully reproducible and gives identical results for any value ofnCores. The caller's RNG state and RNG kind are restored afterwards.
Bug fixes
- User result columns named
id,errorormessageare no longer silently overwritten: they are renamed to<name>_resultwith a warning. A warning is also given when a result column duplicates a design-condition name (the join then suffixes the columns.x/.y). export/envnow also work when running sequentially (nCores = 1): the simulation expression (andexclude) are evaluated with the caller's environment as enclosure, so objects local to a calling function are found without being in the global environment. Previously this only worked in parallel runs (the completion of the fix for GitHub issue #10), making "works with 8 cores, fails with 1 core" a confusing failure mode.- BREAKING BUG FIX: the
excludeargument ofparSim_dt()did the opposite of its documentation -- it *kept* only the rows matching the exclusion expressions instead of removing them. Matching rows are now removed. Multiple expressions are combined with OR (any match removes the row); previously they were combined with AND. parSim_dt()no longer adds a spuriousrncolumn when the simulation expression returns a data frame (row names are dropped), so list and data-frame results now produce identical output schemas.- Removed
LazyData: truefrom DESCRIPTION (the package has no data directory), fixing an R CMD check NOTE. - The deprecated
cores/savearguments are now only intercepted when they look like the deprecated scalar arguments; a design condition legitimately namedcores(e.g.cores = c(1, 2, 4)) is kept as a condition.nCoresis validated to be a single integer >= 1. - Clear, early error messages for invalid input: zero-length simulation conditions,
replications < 1, and designs left empty afterexclude(previously crashed later with unrelated-looking errors).
Documentation
- The supercomputer vignette is no longer written around one specific cluster. It now describes a generic Slurm-based cluster, and the dead link to the decommissioned Lisa Computing Cluster has been removed.
From NEWS.md in the release
Install
Health
- OK13 OK2026-08-05
- NOTE12 OK, 1 NOTE2026-08-01
- OK14 OK2026-03-10
Documentation
- Help pages
- 4 (1 internal)includes a package overview page
- Examples that run
- 100%1 run in a plain check
- Exported functions with examples
- 33%
- Documented parameters
- 100%
- Return-value docs
- 67%
- Help pages citing references
- 0%
Downloads
Repository
- PRs merged (all time)
- 100%
- Median days to close, 50 most recently updated closed issues
- 41
- Median days to close, 50 most recently updated closed PRs
- 2
Stars over time
Forks over time
Issues over time
PRs over time
Commits over time
2 development-tooling and community-health practices detected across 1 family in the upstream repository
Checks run against github.com/sachaepskamp/parsim on 2026-10-21.
The R CMD check workflow runs on Linux, macOS and Windows, and on R-devel
This repository shows signs of AI coding tools.
- Claude Codefirst seen 2026-02-25Named in .Rbuildignore: .claudeCommits: at least 19 crediting it in the message
- Claude Fable 513 commits · Jul 2026
- Claude Opus 4.85 commits · Jul 2026
- Claude Opus 4.61 commit · Feb 2026
Dependencies
Installing parSim adds 26 packages (13 with compiled code, 13 MB of source tarballs). Heaviest: data.table 5.7 MB, parabar 1.3 MB, vctrs 1.0 MB.
Code & Tests
People & History
Pick two releases to compare their code metrics.
- 0.4.0Latest
- RR 4.6.0 released · 2026-04-24
- 0.3.1
- RR 4.5.0 released · 2025-04-11
- RR 4.4.0 released · 2024-04-24
- 0.1.5
- RR 4.3.0 released · 2023-04-21
- RR 4.2.0 released · 2022-04-22
- RR 4.1.0 released · 2021-05-18
- 0.1.42020-07-10 · diff ↗
- RR 4.0.0 released · 2020-04-24
- 0.1.12019-06-21 · diff ↗
- RR 3.6.0 released · 2019-04-26
- RR 3.5.0 released · 2018-04-23
- 0.12017-11-10
- RR 3.4.0 released · 2017-04-21
Package metadata
- First published
- 2017-11-10
- Total releases
- 6 / 9 yrs
- License
- GPL-2 OSI
- Download size
- 93 KB
Cite
Cite this package
Run in R for the authors' preferred citation:
citation("parSim")This package has no citation file, so citation() returns this entry built from DESCRIPTION.
Cite the R Observatory
For a number measured here: a download total, a coverage figure, an archival date.
From data release v2026-10-23, which the citation names so these numbers can be found later. More on citing and the projects behind them.