-Wdeprecated-declarations warning reported by
CRAN’s macOS/M1mac additional check (Apple clang 21, macOS 26 SDK). The
newer libc++ deprecates
std::char_traits<unsigned char>, which the vendored
nlohmann/json instantiates through its binary output/stream adapters
(std::basic_string<std::uint8_t> /
std::basic_ostream<std::uint8_t>). ppforest2 does not
use nlohmann’s binary formats, so the vendored json.hpp is
now bracketed with a _Pragma guard that suppresses the
deprecation. _Pragma (unlike #pragma) is not
flagged by R CMD check’s pragma check. The guard is applied
by make r-vendor-deps
(scripts/vendor-guard-json.sh).Makevars instead of CMake, with no network access or
downloaded dependencies at install time. Eigen is provided by RcppEigen;
nlohmann/json and pcg headers are vendored under
inst/include. This makes the package installable on CRAN’s
offline build machines. (fmt and csv-parser,
used only by the CLI, are no longer part of the R build.)EIGEN_NO_AUTOMATIC_RESIZING on all platforms and
EIGEN_DONT_VECTORIZE on Windows.stats/GroupPartition and
stats/Simulation so the code compiles warning-free under a
strict C++17 GCC (-Wall -Wextra -pedantic).EIGEN_VERSION_AT_LEAST(3, 4, 0)
guard fails the build with a clear message if an incompatible Eigen is
supplied (e.g. via RcppEigen).make r-vendor-deps re-vendors the committed json/pcg
headers after a version bump in
core/Dependencies.cmake.DESCRIPTION uses Authors@R and cites
the projection-pursuit tree and forest references with DOIs.\donttest with requireNamespace() guards
instead of \dontrun, so they run under
--run-donttest when the suggested packages are
available.cran-comments.md. The package passes
R CMD check --as-cran with no errors or warnings; remaining
notes (new submission, cosmetic pragmas in the vendored nlohmann/json
headers) are documented for the reviewer.oob_error is NA_real_ (R) / “not available”
(CLI) when no observation has any out-of-bag tree.null-or-value representation so downstream
tooling can distinguish “computed but empty” from other shapes without
special-casing.pptr() and pprf() with formula and
matrix interfaces. Returned models carry an S3 class vector identifying
both model type and mode
(e.g. c("pprf_classification", "pprf", "ppmodel")).predict() returns group labels
(type = "class") or vote proportions
(type = "prob") for classification.summary() displays training and OOB confusion
matrices.oob_error(),
oob_predictions(), oob_samples(),
bag_samples(), permuted_importance(),
weighted_importance() — compute from the training data
stored on the model on first access and memoize in an environment cache,
so training is fast and repeated access is free.
oob_predictions() returns a factor with NA for
rows with no OOB tree.save_json() and load_json() for model
persistence.pp_tree() and
pp_rand_forest() model specifications.datasets::iris from base R for iris examples.)train fits a tree or forest from CSV and saves as
JSON.predict applies a saved model to new data.evaluate runs train/test evaluation with smart
convergence.summarize displays model configuration, data
summary, and metrics from a saved model JSON. --data
recomputes metrics from training data.benchmark runs multi-scenario performance
benchmarks with baseline comparison.serve exposes a saved model over HTTP —
GET / returns the model summary as JSON (or an HTML
dashboard for browsers showing configuration, training metrics, and
variable importance), GET /health is a liveness probe, and
POST /predict accepts a feature CSV and returns predictions
(JSON for API clients, an HTML predictions page for browsers, with a
Download CSV button and confusion matrix when the request CSV includes a
response column). Results are cached in-memory with shareable
?id=… URLs; the dashboard binds to
127.0.0.1:8080 by default.Regression support is included but untested in production workloads. API surface and defaults may change in future releases.
ByCutpoint grouping
strategy that quantile-slices the continuous response, a
MeanResponse leaf, and MinSize /
MinVariance / CompositeStop
(stop::any) stop rules.y is numeric (not a
factor). predict() returns a numeric vector
(type = "response").grouping_by_cutpoint(), leaf_mean_response(),
stop_min_size(), stop_min_variance(),
stop_any().summary() displays MSE / MAE / R² for regression
models. oob_predictions() returns a numeric vector with
NA_real_ for rows with no OOB tree.save_json() / load_json() preserve
regression mode; parsnip pp_tree() /
pp_rand_forest() accept
mode = "regression".--mode classification|regression selects the
training mode; regression reads the last CSV column as the continuous
response. predict returns numeric predictions and
MSE/MAE/R²; evaluate reports MSE for regression.california_housing
(20,433 × 9, predict median_house_value). For smaller
regression examples use datasets::mtcars from base R.