# MachineShop 3.9.4 (CRAN)

Machine Learning Models and Tools

[Record of 3.9.4](/cran/MachineShop/v/3.9.4.md) | Compare: [With 3.9.3](/cran/MachineShop/compare/3.9.3...3.9.4.md), [With another package](/compare/MachineShop.md#add), [Downloads](/downloads/compare/MachineShop.md#add) | [Licences](/cran/MachineShop/licences.md) | [SBOM](/cran/MachineShop/sbom.md)

Install from CRAN: `install.packages("MachineShop")`

Also from:

- r2u (Ubuntu binaries): `sudo apt install r-cran-machineshop` _Listed from recorded download activity on this channel, not from a live index, so read it as last known. Bioconductor packages are named r-bioc-<name> there._
- Fedora COPR (iucar/cran): `sudo dnf install R-CRAN-MachineShop` _A rebuild of what CRAN lists, so it can lag CRAN by a rebuild._
- autoCRAN (openSUSE): `sudo zypper install R-MachineShop` _Listed from recorded download activity on this channel, not from a live index, so read it as last known._

- CRAN checks: All OK (13 platforms)
- CRAN 30-day downloads: 808 (down 17% on the 30 days before, the worse direction)
- Dependent packages: 2 (none suggest it)
- Test coverage: 0.1% (of lines run by tests)
- Advisories: None known

## About

[Method](/about/licenses.md)

Meta-package for statistical and machine learning with a unified interface for model fitting, prediction, performance assessment, and presentation of results.

**Full description**

Meta-package for statistical and machine learning with a unified interface for model fitting, prediction, performance assessment, and presentation of results. Approaches for model fitting and prediction of numerical, categorical, or censored time-to-event outcomes include traditional regression models, regularization methods, tree-based methods, support vector machines, neural networks, ensembles, data preprocessing, filtering, and model tuning and selection. Performance metrics are provided for model assessment and can be estimated with independent test sets, split sampling, cross-validation, or bootstrap resampling. Resample estimation can be executed in parallel for faster processing and nested in cases of model tuning and selection. Modeling results can be summarized with descriptive statistics; calibration curves; variable importance; partial dependence plots; confusion matrices; and ROC, lift, and other performance curves.

- Maintainer: Brian J Smith
- Licence: [GPL-3](/licences/GPL-3.md)
- Latest release: 4 Sep 2026
- First release: 14 Oct 2018

- [Website](https://brian-j-smith.github.io/MachineShop/)
- [CRAN page](https://cran.r-project.org/package=MachineShop)
- [Source repository](https://github.com/brian-j-smith/machineshop)
- [Issues](https://github.com/brian-j-smith/MachineShop/issues)
- [Source of every release](https://github.com/cran/MachineShop)

[Compare with another package](/compare/MachineShop.md#add)

**More details**

- Releases: 38
- Needs compilation: Yes
- Needs R: >= 4.1.0
- Config/roxygen2/version: 8.0.0
- Date: 2026-09-04
- LazyData: true

**Subjects (1) [Method](/about/subjects.md#found)**

- [Machine learning frameworks](/topics/subjects/machine-learning-frameworks.md)

**Cite**

#### Package

Run in R for the authors' preferred citation:

`citation("MachineShop")`

The package provides a citation file that builds its entry when R runs it. Run `citation()` to see it.

#### R Observatory

For a number measured here: a download total, a coverage figure, an archival date.

APA: Balamuta, J. J. (2026). R Observatory: Metrics for MachineShop version 3.9.4 [Data set]. HJJB, LLC. Data release v2026-10-28. https://doi.org/10.5281/zenodo.21843040

BibTeX:

```
@misc{robservatoryMachineShop,
  author    = {Balamuta, James Joseph},
  title     = {{R} {Observatory}: Metrics for {MachineShop} version 3.9.4},
  year      = {2026},
  publisher = {HJJB, LLC},
  doi       = {10.5281/zenodo.21843040},
  url       = {https://r-observatory.thecoatlessprofessor.com/packages/MachineShop},
  note      = {Data set. Data release v2026-10-28}
}
```

From data release v2026-10-28, which the citation names so these numbers can be found later.

## Health

[Method](/about/checks-health.md)

All 13 check platforms pass.

13 CRAN platforms: 13 OK.

Platforms now:

- r-devel-linux-x86_64-debian-clang: OK
- r-devel-linux-x86_64-debian-gcc: OK
- r-devel-linux-x86_64-fedora-clang: OK
- r-devel-linux-x86_64-fedora-gcc: OK
- r-devel-windows-x86_64: OK
- r-oldrel-macos-arm64: OK
- r-oldrel-macos-x86_64: OK
- r-oldrel-windows-x86_64: OK
- r-patched-linux-x86_64: OK
- r-release-linux-x86_64: OK
- r-release-macos-arm64: OK
- r-release-macos-x86_64: OK
- r-release-windows-x86_64: OK

#### Over time

No change since 25 Oct 2026

**As a list (11)**

| Changed | Worst status | OK | Notes | Warnings | Errors |
| --- | --- | ---: | ---: | ---: | ---: |
| 25 Oct 2026 | OK | 13 | 0 | 0 | 0 |
| 24 Oct 2026 | Error | 12 | 0 | 0 | 1 |
| 8 Sep 2026 | OK | 13 | 0 | 0 | 0 |
| 7 Sep 2026 | Error | 12 | 0 | 0 | 1 |
| 5 Aug 2026 | OK | 13 | 0 | 0 | 0 |
| 1 Aug 2026 | Note | 12 | 1 | 0 | 0 |
| 3 Jul 2026 | OK | 13 | 0 | 0 | 0 |
| 8 Jun 2026 | Error | 11 | 0 | 0 | 2 |
| 8 Apr 2026 | OK | 14 | 0 | 0 | 0 |
| 7 Apr 2026 | Error | 13 | 0 | 0 | 1 |
| 10 Mar 2026 | OK | 14 | 0 | 0 | 0 |

Since March 2026

[Check results on CRAN](https://cran.r-project.org/web/checks/check_results_MachineShop.html)

## Downloads

[Method](/about/downloads.md)

- Downloads in the last 30 days: 835 (down 17.4% on the 30 days before, the worse direction. It is the sum of 3 channels: CRAN, r2u and autoCRAN.)

CRAN alone: rank among CRAN packages, last 30 days: 4,116 of 26,530.

| Channel | Downloads in the last 30 days | In the total | Rank in that channel | Change |
| --- | ---: | --- | --- | --- |
| CRAN | 808 | yes | 4,116 of 26,530 | down 17% on the 30 days before, the worse direction |
| r2u | 21 | yes | 4,620 of 30,526 | down 4.6% on the 30 days before, the worse direction |
| autoCRAN | 6 | yes | 8,234 of 29,212 | down 62.5% on the 30 days before, the worse direction |

Other windows: [Last 90 days](/cran/MachineShop.md?win=90d#downloads), [Last 365 days](/cran/MachineShop.md?win=365d#downloads), [All time](/cran/MachineShop.md?win=all#downloads).

To leave channels out of the total, name them in the address, joined by dots: `?off=r2u.autocran`.

#### Over time

Downloads over time, the last 12 whole months:

| Month | CRAN | r2u | autoCRAN | Sum |
| --- | ---: | ---: | ---: | ---: |
| Oct 2025 | 1,106 | 30 | no figure | 1,136 |
| Nov 2025 | 832 | 34 | no figure | 866 |
| Dec 2025 | 838 | 51 | no figure | 889 |
| Jan 2026 | 453 | 42 | no figure | 495 |
| Feb 2026 | 756 | 55 | no figure | 811 |
| Mar 2026 | 804 | 31 | no figure | 835 |
| Apr 2026 | 425 | 66 | no figure | 491 |
| May 2026 | 335 | 42 | no figure | 377 |
| Jun 2026 | 678 | 30 | no figure | 708 |
| Jul 2026 | 438 | 32 | 43 | 513 |
| Aug 2026 | 512 | 22 | 32 | 566 |
| Sep 2026 | 950 | no figure | 10 | not whole yet |

The sum stops at Aug 2026: r2u has no later month on record yet.

First day on record: CRAN 14 Oct 2018, r2u 22 May 2022, autoCRAN 1 Jul 2026.

Every channel here counts downloads, so the channels can be stacked and summed for one period. Each channel counts in its own way and covers a different span of years, so read a sum as a rough total, and read a rise where a channel begins as that channel starting, not as growth.

Weeks start on Monday. A first or last week or month that the channel does not cover in full is left out, so every point is a whole period.

Days with no record add nothing to their week or month. For a little-used package that is usually a day with no downloads, but it can also be a gap in collection.

[Compare downloads](/downloads/compare/MachineShop.md#add)

## Dependencies

[Method](/about/reverse-dependencies.md)

- Needs: 20
- Dependent packages: 2
- Suggested by: 0

**Needs (20)**

- [abind](/cran/abind.md)
- [cli](/cran/cli.md)
- [dials](/cran/dials.md)
- [foreach](/cran/foreach.md)
- [ggplot2](/cran/ggplot2.md)
- [kernlab](/cran/kernlab.md)
- [magrittr](/cran/magrittr.md)
- [Matrix](/cran/Matrix.md)
- methods
- [nnet](/cran/nnet.md)
- [party](/cran/party.md)
- [polspline](/cran/polspline.md)
- [progress](/cran/progress.md)
- [recipes](/cran/recipes.md)
- [rlang](/cran/rlang.md)
- [rsample](/cran/rsample.md)
- [Rsolnp](/cran/Rsolnp.md)
- [survival](/cran/survival.md)
- [tibble](/cran/tibble.md)
- utils

- Installing it adds: 84 packages, 67.1 MB of source
- Of those, need compilation: 42

**Optional extras (37)**

- [adabag](/cran/adabag.md)
- [BART](/cran/BART.md)
- [bartMachine](/cran/bartMachine.md)
- [C50](/cran/C50.md)
- [censored](/cran/censored.md)
- [cluster](/cran/cluster.md)
- [doParallel](/cran/doParallel.md)
- [e1071](/cran/e1071.md)
- [earth](/cran/earth.md)
- [elasticnet](/cran/elasticnet.md)
- [gbm](/cran/gbm.md)
- [generics](/cran/generics.md)
- [glmnet](/cran/glmnet.md)
- [gridExtra](/cran/gridExtra.md)
- [Hmisc](/cran/Hmisc.md)
- [kableExtra](/cran/kableExtra.md)
- [kknn](/cran/kknn.md)
- [knitr](/cran/knitr.md)
- [lars](/cran/lars.md)
- [MASS](/cran/MASS.md)
- [mboost](/cran/mboost.md)
- [mda](/cran/mda.md)
- [ParBayesianOptimization](/cran/ParBayesianOptimization.md)
- [parsnip](/cran/parsnip.md)
- [partykit](/cran/partykit.md)
- [pls](/cran/pls.md)
- [pso](/cran/pso.md)
- [randomForest](/cran/randomForest.md)
- [randomForestSRC](/cran/randomForestSRC.md)
- [ranger](/cran/ranger.md)
- [rBayesianOptimization](/cran/rBayesianOptimization.md)
- [rmarkdown](/cran/rmarkdown.md)
- [rms](/cran/rms.md)
- [rpart](/cran/rpart.md)
- [testthat](/cran/testthat.md)
- [tree](/cran/tree.md)
- [xgboost](/cran/xgboost.md)

**Dependent packages (2)**

| Package | Title | Downloads in 30 days |
| --- | --- | ---: |
| [LogisticEnsembles](/cran/LogisticEnsembles.md) | Automatically Runs 18 Logistic Models-14 Individual Logistic Models and 4 Ensembles of Models | 329 |
| [ClassificationEnsembles](/cran/ClassificationEnsembles.md) | Automatically Builds 12 Classification Models (6 Individual and 6 Ensembles of Models) from Classification Data | 304 |

## Code

[Method](/about/code-metrics.md)

Selected function: `check_na.rm`

- Kind: Internal R function
- File: R/conditions.R, line 290
- Lines: 8
- Complexity: 3
- Covered by tests: 0%

Called by 3: [`MLModel`](/cran/MachineShop.md?fn=MLModel&view=focus#code) (0% of lines run by tests), [`ModelFrame.ModelFrame`](/cran/MachineShop.md?fn=ModelFrame.ModelFrame&view=focus#code) (0% of lines run by tests), [`update.MLModel`](/cran/MachineShop.md?fn=update.MLModel&view=focus#code) (0% of lines run by tests)

Calls 2: [`check_assignment`](/cran/MachineShop.md?fn=check_assignment&view=focus#code) (0% of lines run by tests), [`check_match`](/cran/MachineShop.md?fn=check_match&view=focus#code) (0% of lines run by tests)

Paths: 2 steps each way.

Called by 3:

- [`MLModel`](/cran/MachineShop.md?fn=MLModel&view=focus#code), called by 42
  - [`GBMModel`](/cran/MachineShop.md?fn=GBMModel&view=focus#code)
  - [`GLMNetModel`](/cran/MachineShop.md?fn=GLMNetModel&view=focus#code)
  - [`XGBModel`](/cran/MachineShop.md?fn=XGBModel&view=focus#code)
  - [`RFSRCModel`](/cran/MachineShop.md?fn=RFSRCModel&view=focus#code), called by 1
  - [`TunedModel`](/cran/MachineShop.md?fn=TunedModel&view=focus#code)
  - [`EarthModel`](/cran/MachineShop.md?fn=EarthModel&view=focus#code), called by 1
  - [`GAMBoostModel`](/cran/MachineShop.md?fn=GAMBoostModel&view=focus#code)
  - [`GLMBoostModel`](/cran/MachineShop.md?fn=GLMBoostModel&view=focus#code)
  - [`ParsnipModel`](/cran/MachineShop.md?fn=ParsnipModel&view=focus#code), called by 1
  - [`BlackBoostModel`](/cran/MachineShop.md?fn=BlackBoostModel&view=focus#code)
  - and 32 more
- [`ModelFrame.ModelFrame`](/cran/MachineShop.md?fn=ModelFrame.ModelFrame&view=focus#code)
- [`update.MLModel`](/cran/MachineShop.md?fn=update.MLModel&view=focus#code)

Calls 2:

- [`check_assignment`](/cran/MachineShop.md?fn=check_assignment&view=focus#code)
- [`check_match`](/cran/MachineShop.md?fn=check_match&view=focus#code), calls 2
  - [`as_string`](/cran/MachineShop.md?fn=as_string&view=focus#code)
  - [`DomainError`](/cran/MachineShop.md?fn=DomainError&view=focus#code), calls 1

The open file in the files map is `R/conditions.R`.

- Functions: 34
- Lines: 338
- Calls that stay inside it: 29
- Calls to other files: 18, to 3
- Calls from other files: 310, from 42

It calls: `R/utils.R` (16 calls), `R/grid.R` (1 call), `R/coerce.R` (1 call)

Called from: `R/TrainingParams.R` (34 calls), `R/MLControl.R` (16 calls), `R/varimp.R` (16 calls), `R/coerce.R` (16 calls), `R/utils.R` (13 calls), `R/plot.R` (13 calls), `R/TrainedInputs.R` (12 calls), `R/ModelFrame.R` (12 calls), `R/ModelRecipe.R` (12 calls), `R/combine.R` (10 calls), `R/fit.R` (9 calls), `R/MLModel.R` (9 calls), and 30 more

| Function in conditions.R | Calls in other files |
| --- | --- |
| [`check_na.rm`](/cran/MachineShop.md?fn=check_na.rm&view=focus#code) selected | nothing outside this file |
| [`check_array`](/cran/MachineShop.md?fn=check_array&view=focus#code) | [`is_empty`](/cran/MachineShop.md?fn=is_empty&view=focus#code), [`ndim`](/cran/MachineShop.md?fn=ndim&view=focus#code), [`size`](/cran/MachineShop.md?fn=size&view=focus#code) |
| [`check_metrics`](/cran/MachineShop.md?fn=check_metrics&view=focus#code) | [`map`](/cran/MachineShop.md?fn=map&view=focus#code), [`vector_to_function`](/cran/MachineShop.md?fn=vector_to_function&view=focus#code) |
| [`check_packages`](/cran/MachineShop.md?fn=check_packages&view=focus#code) | [`map`](/cran/MachineShop.md?fn=map&view=focus#code), [`note_items`](/cran/MachineShop.md?fn=note_items&view=focus#code) |
| [`TypeError`](/cran/MachineShop.md?fn=TypeError&view=focus#code) | [`as_string`](/cran/MachineShop.md?fn=as_string&view=focus#code), [`class1`](/cran/MachineShop.md?fn=class1&view=focus#code) |

**More functions (29)**

| Function in conditions.R | Calls in other files |
| --- | --- |
| [`.throw.error`](/cran/MachineShop.md?fn=.throw.error&view=focus#code) | [`class1`](/cran/MachineShop.md?fn=class1&view=focus#code) |
| [`.throw.warning`](/cran/MachineShop.md?fn=.throw.warning&view=focus#code) | [`class1`](/cran/MachineShop.md?fn=class1&view=focus#code) |
| [`check_censoring`](/cran/MachineShop.md?fn=check_censoring&view=focus#code) | [`as_string`](/cran/MachineShop.md?fn=as_string&view=focus#code) |
| [`check_grid`](/cran/MachineShop.md?fn=check_grid&view=focus#code) | [`TuningGrid`](/cran/MachineShop.md?fn=TuningGrid&view=focus#code) |
| [`check_match`](/cran/MachineShop.md?fn=check_match&view=focus#code) | [`as_string`](/cran/MachineShop.md?fn=as_string&view=focus#code) |
| [`check_metric`](/cran/MachineShop.md?fn=check_metric&view=focus#code) | [`as.MLMetric`](/cran/MachineShop.md?fn=as.MLMetric&view=focus#code) |
| [`check_optim_bounds`](/cran/MachineShop.md?fn=check_optim_bounds&view=focus#code) | [`is_empty`](/cran/MachineShop.md?fn=is_empty&view=focus#code) |
| [`check_stat`](/cran/MachineShop.md?fn=check_stat&view=focus#code) | [`fget`](/cran/MachineShop.md?fn=fget&view=focus#code) |
| [`check_stats`](/cran/MachineShop.md?fn=check_stats&view=focus#code) | [`vector_to_function`](/cran/MachineShop.md?fn=vector_to_function&view=focus#code) |
| [`.throw`](/cran/MachineShop.md?fn=.throw&view=focus#code) | nothing outside this file |
| [`.throw.default`](/cran/MachineShop.md?fn=.throw.default&view=focus#code) | nothing outside this file |
| [`.throw.LocalError`](/cran/MachineShop.md?fn=.throw.LocalError&view=focus#code) | nothing outside this file |
| [`.throw.LocalWarning`](/cran/MachineShop.md?fn=.throw.LocalWarning&view=focus#code) | nothing outside this file |
| [`check_assignment`](/cran/MachineShop.md?fn=check_assignment&view=focus#code) | nothing outside this file |
| [`check_character`](/cran/MachineShop.md?fn=check_character&view=focus#code) | nothing outside this file |
| [`check_const_setting`](/cran/MachineShop.md?fn=check_const_setting&view=focus#code) | nothing outside this file |
| [`check_equal_weights`](/cran/MachineShop.md?fn=check_equal_weights&view=focus#code) | nothing outside this file |
| [`check_integer`](/cran/MachineShop.md?fn=check_integer&view=focus#code) | nothing outside this file |
| [`check_logical`](/cran/MachineShop.md?fn=check_logical&view=focus#code) | nothing outside this file |
| [`check_numeric`](/cran/MachineShop.md?fn=check_numeric&view=focus#code) | nothing outside this file |
| [`check_weights`](/cran/MachineShop.md?fn=check_weights&view=focus#code) | nothing outside this file |
| [`DeprecatedCondition`](/cran/MachineShop.md?fn=DeprecatedCondition&view=focus#code) | nothing outside this file |
| [`DomainError`](/cran/MachineShop.md?fn=DomainError&view=focus#code) | nothing outside this file |
| [`Error`](/cran/MachineShop.md?fn=Error&view=focus#code) | nothing outside this file |
| [`LocalError`](/cran/MachineShop.md?fn=LocalError&view=focus#code) | nothing outside this file |
| [`LocalWarning`](/cran/MachineShop.md?fn=LocalWarning&view=focus#code) | nothing outside this file |
| [`select_call`](/cran/MachineShop.md?fn=select_call&view=focus#code) | nothing outside this file |
| [`throw`](/cran/MachineShop.md?fn=throw&view=focus#code) | nothing outside this file |
| [`Warning`](/cran/MachineShop.md?fn=Warning&view=focus#code) | nothing outside this file |


5 files with no calls to or from another: `R/append.R`, `R/extract.R`, `R/MLInput.R`, `R/MLMetric.R`, `src/init.c`.

The whole package has 747 function names in 86 files and 1,652 calls between them. Most calls between files: `R/conditions.R` and `R/TrainingParams.R` (34 calls), `R/conditions.R` and `R/utils.R` (29 calls), `R/print.R` and `R/settings.R` (26 calls), `R/metrics.R` and `R/metrics_factor.R` (23 calls), `R/combine.R` and `R/utils.R` (21 calls).

Graph: the whole call graph has 648 function names that take part in a call and 1,652 calls between them, set out in 10 layers with callers before what they call. Of these calls, 1 closes a loop and runs the other way. 99 function names have no calls and are left out. Called by the most functions: `throw` (115), `map` (89), `settings` (88), `Error` (68), `response` (44). Calling the most functions: `rfe.ModelSpecification` (23), `optim` (21), `varimp_permute` (18), `predict.MLModelFit` (16), `GBMModel` (13).

Most connected functions: [`throw`](/cran/MachineShop.md?fn=throw&view=focus#code) 116, [`settings`](/cran/MachineShop.md?fn=settings&view=focus#code) 91, [`map`](/cran/MachineShop.md?fn=map&view=focus#code) 89, [`Error`](/cran/MachineShop.md?fn=Error&view=focus#code) 69, [`MLModel`](/cran/MachineShop.md?fn=MLModel&view=focus#code) 46, [`response`](/cran/MachineShop.md?fn=response&view=focus#code) 44

To select another function, add ?fn=NAME to this address.

The call graph also has an address of its own: /cran/MachineShop/graph.md?fn=check_na.rm&view=focus

- Functions: 748
- Public exports: 153
- Lines of R code: 19,037
- Median complexity: 1

**Functions (748)**

| Function (sorted, low to high) | Kind | File | Lines | Complexity | Covered |
| --- | --- | --- | ---: | ---: | ---: |
| [`.`](/cran/MachineShop.md?fn=.#code) | Public | R/utils.R | 3 | 1 | 0% |
| [`AdaBagModel`](/cran/MachineShop.md?fn=AdaBagModel#code) | Public | R/ML_AdaBagModel.R | 43 | 1 | 0% |
| [`AdaBoostModel`](/cran/MachineShop.md?fn=AdaBoostModel#code) | Public | R/ML_AdaBoostModel.R | 48 | 1 | 0% |
| [`BARTMachineModel`](/cran/MachineShop.md?fn=BARTMachineModel#code) | Public | R/ML_BARTMachineModel.R | 55 | 3 | 0% |
| [`BARTModel`](/cran/MachineShop.md?fn=BARTModel#code) | Public | R/ML_BARTModel.R | 73 | 6 | 0% |
| [`BinomialVariate`](/cran/MachineShop.md?fn=BinomialVariate#code) | Public | R/response.R | 9 | 2 | 0% |
| [`BlackBoostModel`](/cran/MachineShop.md?fn=BlackBoostModel#code) | Public | R/ML_BlackBoostModel.R | 78 | 3 | 0% |
| [`BootControl`](/cran/MachineShop.md?fn=BootControl#code) | Public | R/MLControl.R | 11 | 1 | 0% |
| [`BootOptimismControl`](/cran/MachineShop.md?fn=BootOptimismControl#code) | Public | R/MLControl.R | 8 | 1 | 0% |
| [`C50Model`](/cran/MachineShop.md?fn=C50Model#code) | Public | R/ML_C50Model.R | 54 | 1 | 0% |
| [`CForestModel`](/cran/MachineShop.md?fn=CForestModel#code) | Public | R/ML_CForestModel.R | 57 | 3 | 0% |
| [`CVControl`](/cran/MachineShop.md?fn=CVControl#code) | Public | R/MLControl.R | 15 | 1 | 0% |

This page lists 1 to 12 of 748 functions. [Next](/cran/MachineShop.md?sort=name&order=asc&fpage=2#functions)

**Size and composition**

#### Lines by kind (33,157)

| Kind | Lines | Share |
| --- | ---: | ---: |
| R code | 19,037 | 57% |
| Tests | 3,819 | 12% |
| Documentation | 7,606 | 23% |
| Guides | 2,655 | 8% |
| Compiled code | 40 | 0.1% |

#### Lines by language

| Language | Lines | Share |
| --- | ---: | ---: |
| R | 20,936 | 63% |
| Rd | 7,606 | 23% |
| Other | 2,337 | 7% |
| Vignettes | 2,238 | 7% |
| C | 40 | 0.1% |

Languages are counted from file extensions.

- Files: 299
- R functions: 746
- Compiled functions: 2
- Object systems: S3: 241 methods, S4: 79 classes, S4: 8 generics, S4: 64 methods

**Complexity**

- Median: 1
- Mean: 2.15
- Highest: 19
- Median lines per function: 6

_About complexity: Cyclomatic complexity counts the independent paths through a function: 1 is a straight line, higher is harder to test. R functions only._

**Call graph figures**

- R functions: 746
- Calls: 1,652
- Unconnected: 98
- Groups: 11

**Growth (38 releases)**

Total lines by release: from 5,375 (on 14 Oct 2018) to 33,157 (on 4 Sep 2026). The lowest is 5,375 and the highest is 33,159.

**Release changes**

[Both releases side by side](/cran/MachineShop/compare/3.9.3...3.9.4.md)

**3.9.3 to 3.9.4**, 26 Jun 2026 to 4 Sep 2026

- Files changed: 6
- Lines added: 42
- Lines deleted: 40
- Exports: No change

**Changed measures (3)**

| Measure | Subject | Before | After |
| --- | --- | ---: | ---: |
| Total lines | Structure | 33,159 | 33,157 |
| Lines of R code | Structure | 19,039 | 19,037 |
| Lines per function (mean) | Complexity | 13.77 | 13.76 |

**Most changed files (6 of 6)**

| File | Lines added | Lines deleted |
| --- | ---: | ---: |
| `inst/doc/UserGuide.html` | 28 | 28 |
| `MD5` | 5 | 5 |
| `DESCRIPTION` | 4 | 4 |
| `NEWS.md` | 4 | 0 |
| `R/ML_GAMBoostModel.R` | 1 | 3 |
| `build/vignette.rds` | 0 | 0 |

## Tests

[Method](/about/coverage.md)

The tests ran and coverage was measured.

- Lines run by tests: 0.1%
- Expressions run by tests: 0.1%
- Test cases: 58
- Exports named in tests: 70.6%

**Coverage by file (85)**

85 files measured, least covered first.

| File | Lines | Run by tests | Not run | Coverage |
|---|---:|---:|---:|---:|
| `R/print.R`, 70 functions | 528 | 0 | 528 | 0% |
| `R/utils.R`, 72 functions | 349 | 0 | 349 | 0% |
| `R/TrainingParams.R`, 26 functions | 308 | 0 | 308 | 0% |
| `R/calibration.R`, 12 functions | 247 | 0 | 247 | 0% |
| `R/resample.R`, 19 functions | 243 | 0 | 243 | 0% |
| `R/ModelFrame.R`, 24 functions | 240 | 0 | 240 | 0% |
| `R/conditions.R`, 34 functions | 236 | 0 | 236 | 0% |
| `R/plot.R`, 11 functions | 207 | 0 | 207 | 0% |
| `R/survival.R`, 37 functions | 201 | 0 | 201 | 0% |
| `R/ML_XGBModel.R`, 5 functions | 187 | 0 | 187 | 0% |
| `R/varimp.R`, 13 functions | 174 | 0 | 174 | 0% |
| `R/expand.R`, 21 functions | 147 | 0 | 147 | 0% |
| `R/grid.R`, 20 functions | 145 | 0 | 145 | 0% |
| `R/rfe.R`, 8 functions | 140 | 0 | 140 | 0% |
| `R/MLOptimization.R`, 5 functions | 126 | 0 | 126 | 0% |
| `R/ML_GLMModel.R`, 2 functions | 121 | 0 | 121 | 0% |
| `R/metrics_factor.R`, 31 functions | 119 | 0 | 119 | 0% |
| `R/ML_GLMNetModel.R`, 1 function | 115 | 0 | 115 | 0% |
| `R/combine.R`, 13 functions | 114 | 0 | 114 | 0% |
| `R/MLModel.R`, 8 functions | 114 | 0 | 114 | 0% |
| `R/TrainedInputs.R`, 13 functions | 111 | 0 | 111 | 0% |
| `R/ML_SVMModel.R`, 10 functions | 103 | 0 | 103 | 0% |
| `R/performance_curve.R`, 11 functions | 102 | 0 | 102 | 0% |
| `R/step_lincomp.R`, 7 functions | 99 | 0 | 99 | 0% |
| `R/case_comps.R`, 20 functions | 98 | 0 | 98 | 0% |
| `R/metrics.R`, 21 functions | 93 | 0 | 93 | 0% |
| `R/step_kmedoids.R`, 7 functions | 91 | 0 | 91 | 0% |
| `R/TrainedModels.R`, 9 functions | 87 | 0 | 87 | 0% |
| `R/step_sbf.R`, 6 functions | 83 | 0 | 83 | 0% |
| `R/ML_GBMModel.R`, 1 function | 82 | 0 | 82 | 0% |
| `R/ML_RFSRCModel.R`, 2 functions | 81 | 0 | 81 | 0% |
| `R/coerce.R`, 42 functions | 80 | 0 | 80 | 0% |
| `R/performance.R`, 16 functions | 77 | 0 | 77 | 0% |
| `R/dependence.R`, 2 functions | 76 | 0 | 76 | 0% |
| `R/summary.R`, 10 functions | 76 | 0 | 76 | 0% |
| `R/fit.R`, 13 functions | 75 | 0 | 75 | 0% |
| `R/ML_StackedModel.R`, 9 functions | 69 | 0 | 69 | 0% |
| `R/ModelRecipe.R`, 12 functions | 69 | 0 | 69 | 0% |
| `R/confusion.R`, 10 functions | 67 | 0 | 67 | 0% |
| `R/step_kmeans.R`, 7 functions | 67 | 0 | 67 | 0% |
| `R/ML_NNetModel.R`, 1 function | 64 | 0 | 64 | 0% |
| `R/ML_SuperModel.R`, 4 functions | 64 | 0 | 64 | 0% |
| `R/ML_SurvRegModel.R`, 2 functions | 63 | 0 | 63 | 0% |
| `R/ML_BlackBoostModel.R`, 1 function | 61 | 0 | 61 | 0% |
| `R/ML_GAMBoostModel.R`, 1 function | 60 | 0 | 60 | 0% |
| `R/ML_BARTModel.R`, 1 function | 58 | 0 | 58 | 0% |
| `R/ML_CoxModel.R`, 2 functions | 58 | 0 | 58 | 0% |
| `R/ML_GLMBoostModel.R`, 1 function | 57 | 0 | 57 | 0% |
| `R/ModelSpecification.R`, 9 functions | 57 | 0 | 57 | 0% |
| `R/response.R`, 16 functions | 57 | 0 | 57 | 0% |
| `R/step_spca.R`, 7 functions | 56 | 0 | 56 | 0% |
| `R/metricinfo.R`, 11 functions | 54 | 0 | 54 | 0% |
| `R/ML_ParsnipModel.R`, 2 functions | 54 | 0 | 54 | 0% |
| `R/predict.R`, 9 functions | 54 | 0 | 54 | 0% |
| `R/ML_EarthModel.R`, 1 function | 53 | 0 | 53 | 0% |
| `R/ML_RPartModel.R`, 1 function | 53 | 0 | 53 | 0% |
| `R/metrics_numeric.R`, 9 functions | 50 | 0 | 50 | 0% |
| `R/ML_KNNModel.R`, 1 function | 47 | 0 | 47 | 0% |
| `R/ML_RangerModel.R`, 1 function | 47 | 0 | 47 | 0% |
| `R/MLControl.R`, 9 functions | 45 | 0 | 45 | 0% |
| `R/ML_FDAModel.R`, 2 functions | 44 | 0 | 44 | 0% |
| `R/ML_PLSModel.R`, 1 function | 44 | 0 | 44 | 0% |
| `R/ML_RandomForestModel.R`, 1 function | 44 | 0 | 44 | 0% |
| `R/ML_CForestModel.R`, 1 function | 42 | 0 | 42 | 0% |
| `R/ML_BARTMachineModel.R`, 1 function | 41 | 0 | 41 | 0% |
| `R/modelinfo.R`, 8 functions | 41 | 0 | 41 | 0% |
| `R/ML_C50Model.R`, 1 function | 40 | 0 | 40 | 0% |
| `R/convert.R`, 18 functions | 39 | 0 | 39 | 0% |
| `R/ML_LDAModel.R`, 1 function | 39 | 0 | 39 | 0% |
| `R/diff.R`, 4 functions | 37 | 0 | 37 | 0% |
| `R/settings.R`, 1 function | 36 | 0 | 36 | 0% |
| `R/extract.R`, 13 functions | 34 | 0 | 34 | 0% |
| `R/ML_LARSModel.R`, 1 function | 33 | 0 | 33 | 0% |
| `R/ML_LMModel.R`, 1 function | 33 | 0 | 33 | 0% |
| `R/ML_AdaBoostModel.R`, 1 function | 32 | 0 | 32 | 0% |
| `R/ML_AdaBagModel.R`, 1 function | 29 | 0 | 29 | 0% |
| `R/recipe_roles.R`, 5 functions | 29 | 0 | 29 | 0% |
| `R/ML_QDAModel.R`, 1 function | 28 | 0 | 28 | 0% |
| `R/ML_TreeModel.R`, 1 function | 27 | 0 | 27 | 0% |
| `R/ML_POLRModel.R`, 1 function | 23 | 0 | 23 | 0% |
| `R/ML_MDAModel.R`, 1 function | 22 | 0 | 22 | 0% |
| `R/ML_NaiveBayesModel.R`, 1 function | 22 | 0 | 22 | 0% |
| `R/append.R`, 8 functions | 16 | 0 | 16 | 0% |
| `R/MLInput.R`, 2 functions | 2 | 0 | 2 | 0% |
| `R/MLMetric.R`, 2 functions | 2 | 0 | 2 | 0% |

Not measured, 2 files: `src/hazfit_efron.c`, `src/init.c`.

**Coverage run**

- Lines counted: 7,638
- Lines the tests ran: 0
- Tests passed: Yes
- Measured with: covr 3.6.5 on R 4.6.1

**Test suite**

- Has tests: Yes
- Test frameworks: RUnit, testthat
- Test cases: 58
- Lines of tests: 3,819
- Test lines per line of code: 0.2

## Documentation

[Method](/about/code-metrics.md)

- Exports documented: 99.3%
- Arguments documented: 87.7%
- Return value documented: 95.2%
- Help pages with examples: 85.6%
- Examples run in checks: 39.8%

**Guides (2)**

- [Conventions for MLModels Implementation](https://cran.r-project.org/web/packages/MachineShop/vignettes/MLModels.html)
- [MachineShop User Guide](https://cran.r-project.org/web/packages/MachineShop/vignettes/UserGuide.html)

**Other documentation**

- README: Yes, 360 words
- Release notes file: Yes
- Help pages: 97
- Lines of documentation: 7,606

## Datasets

[Method](/about/objects.md)

| Dataset | Size | Columns |
| --- | --- | --- |
| [ICHomes](/cran/MachineShop/data/ICHomes.md), Iowa City Home Sales Dataset | 753 × 17 | sale_amount, sale_year, sale_month, built, style, construction and 11 more |

## People

[Method](/about/author-identity.md)

- [Brian J Smith](/people/Brian+J+Smith.md): Maintainer since 0.1-1 (2018), author

## Repository

[Method](/about/repo-signals.md#figures)

[brian-j-smith](/repos/brian-j-smith.md) / [machineshop](https://github.com/brian-j-smith/machineshop) on github.com

- Stars: 61
- Forks: 9
- Open issues: 2
- Last commit: 8 Apr 2026

**Activity**

- Commits: 1,420
- Open pull requests: 0
- Tagged releases: 16
- Latest tagged release: v3.9.2, 11 Mar 2026
- In development: The default branch showed an older version (3.9.2) than CRAN on 2026-10-25
- Issues closed in: 7 days (median)
- Pull requests closed in: 4 days (median)
- Pull requests merged: 100%
- Created: 25 Sep 2018
- Licence file reads as: –

**Development practices (3)**

| Kind | Found |
| --- | --- |
| Docs source | README.Rmd GitHub Pages site last deployed 2025-12-16 |
| CRAN release process | cran-comments.md |

[Across brian-j-smith](/repos/brian-j-smith.md#practices)

## History

[Method](/about/archive.md)

The line runs from the first release of MachineShop on 14 Oct 2018 to 28 Oct 2026 and marks all 38 of its releases. CRAN archived it once, and it came back once.

#### Archived and back

| Archived | Back | CRAN's reason | Kind |
| --- | --- | --- | --- |
| 20 Jan 2021 | 26 Jan 2021 | "check problems were not corrected in time" | Checks not fixed |

| Version | Released | R |
| --- | --- | ---: |
| [3.9.4](/cran/MachineShop/v/3.9.4.md) current | 4 Sep 2026 | 4.6.1 |
| [3.9.3](/cran/MachineShop/v/3.9.3.md) | 26 Jun 2026 | 4.6.1 |
| [3.9.2](/cran/MachineShop/v/3.9.2.md) | 30 Jan 2026 | 4.5.2 |
| [3.9.1](/cran/MachineShop/v/3.9.1.md) | 16 Dec 2025 | 4.5.2 |
| [3.9.0](/cran/MachineShop/v/3.9.0.md) | 9 Jun 2025 | 4.5.0 |
| [3.8.0](/cran/MachineShop/v/3.8.0.md) | 19 Aug 2024 | 4.4.1 |
| [3.7.0](/cran/MachineShop/v/3.7.0.md) | 18 Sep 2023 | 4.3.1 |
| [3.6.2](/cran/MachineShop/v/3.6.2.md) | 21 Mar 2023 | 4.2.3 |

**Earlier versions (30)**

| Version | Released | R | Events |
| --- | --- | ---: | --- |
| [3.6.1](/cran/MachineShop/v/3.6.1.md) | 1 Feb 2023 | 4.2.2 |  |
| [3.6.0](/cran/MachineShop/v/3.6.0.md) | 5 Sep 2022 | 4.2.1 |  |
| [3.5.0](/cran/MachineShop/v/3.5.0.md) | 3 Jun 2022 | 4.2.0 |  |
| [3.4.0](/cran/MachineShop/v/3.4.0.md) | 16 Mar 2022 | 4.1.3 |  |
| [3.3.0](/cran/MachineShop/v/3.3.0.md) | 9 Feb 2022 | 4.1.2 |  |
| [3.2.0](/cran/MachineShop/v/3.2.0.md) | 6 Dec 2021 | 4.1.2 |  |
| [3.1.0](/cran/MachineShop/v/3.1.0.md) | 1 Oct 2021 | 4.1.1 |  |
| [3.0.0](/cran/MachineShop/v/3.0.0.md) | 19 Aug 2021 | 4.1.1 |  |
| [2.9.0](/cran/MachineShop/v/2.9.0.md) | 18 Jun 2021 | 4.1.0 |  |
| [2.8.0](/cran/MachineShop/v/2.8.0.md) | 16 Apr 2021 | 4.0.5 |  |
| [2.7.0](/cran/MachineShop/v/2.7.0.md) | 2 Mar 2021 | 4.0.4 |  |
| [2.6.1](/cran/MachineShop/v/2.6.1.md) | 26 Jan 2021 | 4.0.3 | Back on CRAN 26 Jan 2021. |
| [2.6.0](/cran/MachineShop/v/2.6.0.md) | 19 Jan 2021 | 4.0.3 | Archived 20 Jan 2021. “check problems were not corrected in time” |
| [2.5.0](/cran/MachineShop/v/2.5.0.md) | 6 Aug 2020 | 4.0.2 |  |
| [2.4.0](/cran/MachineShop/v/2.4.0.md) | 5 Jun 2020 | 4.0.0 |  |
| [2.3.0](/cran/MachineShop/v/2.3.0.md) | 14 May 2020 | 4.0.0 |  |
| [2.2.0](/cran/MachineShop/v/2.2.0.md) | 18 Mar 2020 | 3.6.3 |  |
| [2.1.0](/cran/MachineShop/v/2.1.0.md) | 9 Feb 2020 | 3.6.2 |  |
| [2.0.0](/cran/MachineShop/v/2.0.0.md) | 10 Dec 2019 | 3.6.1 |  |
| [1.6.0](/cran/MachineShop/v/1.6.0.md) | 11 Oct 2019 | 3.6.1 |  |
| [1.5.0](/cran/MachineShop/v/1.5.0.md) | 1 Aug 2019 | 3.6.1 |  |
| [1.4.0](/cran/MachineShop/v/1.4.0.md) | 8 Jun 2019 | 3.6.0 |  |
| [1.3.0](/cran/MachineShop/v/1.3.0.md) | 23 Apr 2019 | 3.5.3 |  |
| [1.2.0](/cran/MachineShop/v/1.2.0.md) | 15 Feb 2019 | 3.5.2 |  |
| [1.1.0](/cran/MachineShop/v/1.1.0.md) | 23 Jan 2019 | 3.5.2 |  |
| [1.0.0](/cran/MachineShop/v/1.0.0.md) | 2 Jan 2019 | 3.5.2 |  |
| [0.4.0](/cran/MachineShop/v/0.4.0.md) | 13 Dec 2018 | 3.5.1 |  |
| [0.3.0](/cran/MachineShop/v/0.3.0.md) | 23 Nov 2018 | 3.5.0 |  |
| [0.2.0](/cran/MachineShop/v/0.2.0.md) | 19 Nov 2018 | 3.5.0 |  |
| [0.1-1](/cran/MachineShop/v/0.1-1.md) | 14 Oct 2018 | 3.5.0 |  |

**Release notes (3.9.4)**

- Remove import of defunct **mboost** function `bns()`.

---

R Observatory is independent of the R Project, CRAN and Bioconductor. The same page for people is at /cran/MachineShop?fn=check_na.rm, and every address is listed at /llms.txt.
