OptSurvCutR: Validated Cut-point Selection for Survival Analysis
-
Submitting Author Name: Payton Yau
-
Submitting Author Github Handle: @paytonyau
-
Repository: https://github.com/paytonyau/OptSurvCutR
-
Version submitted: 0.1.8
-
Submission type: Stats
-
Badge grade: bronze
-
Editor: TBD
-
Reviewers: TBD
-
Archive: TBD
-
Version accepted: TBD
-
Language: en
- Paste the full DESCRIPTION file inside a code block below:
Package: OptSurvCutR
Type: Package
Title: Optimal Survival Cut-Point Discovery for Time-to-Event Analysis
Version: 0.1.9
Authors@R:
person(
given = "Payton",
family = "Yau",
email = "[email protected]",
role = c("aut", "cre", "cph"),
comment = c(ORCID = "0000-0002-3283-0370")
)
Description:
Provides a robust 3-step workflow for optimal cut-point analysis in
time-to-event (survival) data. Functions determine the optimal number
of cut-points ('find_cutpoint_number()'), find their precise locations
('find_cutpoint()') using systematic or genetic algorithms (via 'rgenoud'),
and validate stability via bootstrapping ('validate_cutpoint()'). Analyses
can be adjusted for covariates using standard 'survival' package models.
Ideal for biomarker analysis and patient stratification, where non-linear
relationships may exist. Methods described in Yau, P.T.O. (2025)
<doi:10.1101/2025.10.08.681246>.
License: GPL-3 + file LICENSE
URL: https://github.com/paytonyau/OptSurvCutR,
https://paytonyau.github.io/OptSurvCutR/
Encoding: UTF-8
LazyData: true
RoxygenNote: 7.3.3
VignetteBuilder: knitr
Imports:
cli,
doParallel,
foreach,
doRNG,
ggplot2,
parallel,
stats,
survival,
survminer,
tidyr,
srr
Suggests:
broom,
coxphf,
dplyr,
knitr,
patchwork,
pROC,
readxl,
rgenoud,
rmarkdown,
spelling,
testthat (>= 3.0.0),
tibble,
withr
Remotes:
ropensci-review-tools/srr
Config/testthat/edition: 3
Depends:
R (>= 3.5)
Language: en-GB
BugReports: https://github.com/paytonyau/OptSurvCutR/issues
Scope
-
Please indicate which of our statistical package categories this package falls under. (Please check one or more appropriate boxes below):
Statistical Packages
- [ ] Bayesian and Monte Carlo Routines
- [ ] Dimensionality Reduction, Clustering, and Unsupervised Learning
- [ ] Machine Learning
- [x] Regression and Supervised Learning (Supervised method to define groups for survival regression models)
- [x] Exploratory Data Analysis (EDA) and Summary Statistics (Identifying thresholds and visualising relationships)
- [ ] Spatial Analyses
- [ ] Time Series Analyses
- [ ] Probability Distributions
General Information
- Who is the target audience and what are scientific applications of this package?
The target audience includes biostatisticians, bioinformaticians, clinical researchers, ecologists, and any scientist working with time-to-event data and continuous predictors. Scientific applications include biomarker discovery and validation, patient risk stratification in clinical studies, defining exposure thresholds in epidemiology or environmental science, and analysing dose-response relationships over time.
-
Paste your responses to our General Standard G1.1 here, describing whether your software is:
- The first implementation of a novel algorithm; or
- The first implementation within R of an algorithm which has previously been implemented in other languages or contexts; or
- An improvement on other implementations of similar algorithms in R.
Please include hyperlinked references to all other relevant software.
OptSurvCutR represents both an improvement on other R implementations and the first R implementation of a specific, statistically-driven 3-step workflow for survival cut-point analysis.
Its primary innovations are:
-
Novel Cut-point Number Selection:
OptSurvCutRis the first R package to formalise selecting the number of cut-points as a model selection problem usingAICcandBIC, in addition toAIC. This allows users to objectively compare models with 0, 1, 2, or more cut-points. This is a major advancement over tools likeCutpointsOEHR, which is limited toAICand focuses specifically on U or inverse-U shaped relationships with only a fixed, a 2-cut-point consideration. -
Flexible Multi-Cut-point Optimisation: The package is the first employs a genetic algorithm (via
rgenoud) to efficiently find the location of multiple (>2) cut-points simultaneously. This flexible approach can model complex, non-linear associations and is not limited to the single cut-point methods in packages likemaxstatorsurvminer. -
Complete, Validated Workflow:
OptSurvCutRis the first tool to integrate this novel number selection (Step 1) and flexible location finding (Step 2) with crucial downstream steps: covariate adjustment and bootstrap validation (Step 3). This complete, combined and validated workflow directly addresses the well-documented problems of inflated significance and overfitting in outcome-oriented cut-point selection (Altman et al., 1994; Faraggi & Simon, 1996). This rigorous approach aligns with guidance from health technology assessment (HTA), where understanding a model's assumptions and long-term plausibility is critical (Rutherford et al., 2020).
- (If applicable) Does your package comply with our guidance around Ethics, Data Privacy and Human Subjects Research?
Yes. The package performs statistical analysis and includes example datasets (crc_virome, germination). The crc_virome data is derived from publicly available, anonymised TCGA data accessed via Smyth et al. (2024), and germination is simulated. The package itself does not collect, store, or transmit any user data or interact with human subjects directly.
Badging
-
What grade of badge are you aiming for? (bronze, silver, gold) - bronze
-
If aiming for silver or gold, describe which of the four aspects listed in the Guide for Authors chapter the package fulfils (at least one aspect for silver; three for gold) -
Technical checks
Confirm each of the following by checking the box.
-
[x] I have read the rOpenSci packaging guide.
-
[x] I have read the author guide and I expect to maintain this package for at least 2 years or have another maintainer identified.
-
[x] I/we have read the Statistical Software Peer Review Guide for Authors.
-
[x] I/we have run
autotestchecks on the package, and ensured no tests fail. -
[x] The
srr_stats_pre_submit()function confirms this package may be submitted. -
[x] The
pkgcheck()function confirms this package may be submitted - alternatively, please explain reasons for any checks which your package is unable to pass.
This package:
- [x] does not violate the Terms of Service of any service it interacts with.
- [x] has a CRAN and OSI accepted license.
- [x] contains a README with instructions for installing the development version.
Publication options
- [x] Do you intend for this package to go on CRAN?
- [ ] Do you intend for this package to go on Bioconductor?
Code of conduct
- [x] I agree to abide by rOpenSci's Code of Conduct during the review process and in maintaining my package should it be accepted.
Thanks for submitting to rOpenSci, our editors and @ropensci-review-bot will reply soon. Type @ropensci-review-bot help for help.
:rocket:
Editor check started
:wave:
Checks for OptSurvCutR (v0.1.9)
git hash: c13483f3
- :heavy_check_mark: Package name is available
- :heavy_check_mark: has a 'codemeta.json' file.
- :heavy_check_mark: has a 'contributing' file.
- :heavy_check_mark: uses 'roxygen2'.
- :heavy_check_mark: 'DESCRIPTION' has a URL field.
- :heavy_check_mark: 'DESCRIPTION' has a BugReports field.
- :heavy_check_mark: Package has at least one HTML vignette
- :heavy_check_mark: All functions have examples.
- :heavy_multiplication_x: Package fails continuous integration checks.
- :heavy_multiplication_x: Package coverage failed
- :heavy_check_mark: This is a statistical package which complies with all applicable standards
- :heavy_multiplication_x: R CMD check found 1 error.
- :heavy_check_mark: R CMD check found no warnings.
- :eyes: Some goodpractice linters failed.
- :eyes: Function names are duplicated in other packages
Important: All failing checks above must be addressed prior to proceeding
(Checks marked with :eyes: may be optionally addressed.)
Package License: GPL-3 + file LICENSE
1. rOpenSci Statistical Standards (srr package)
This package is in the following category:
- Regression and Supervised Learning
:heavy_check_mark: All applicable standards [v0.2.0] have been documented in this package (315 complied with; 0 N/A standards)
Click to see the report of author-reported standards compliance of the package with links to associated lines of code, which can be re-generated locally by running the srr_report() function from within a local clone of the repository.
2. Package Dependencies
Details of Package Dependency Usage (click to open)
The table below tallies all function calls to all packages ('ncalls'), both internal (r-base + recommended, along with the package itself), and external (imported and suggested packages). 'NA' values indicate packages to which no identified calls to R functions could be found. Note that these results are generated by an automated code-tagging system which may not be entirely accurate.
| type | package | ncalls |
|---|---|---|
| internal | base | 351 |
| internal | utils | 32 |
| internal | graphics | 5 |
| internal | grDevices | 1 |
| internal | tools | 1 |
| imports | stats | 62 |
| imports | ggplot2 | 26 |
| imports | survival | 17 |
| imports | cli | 6 |
| imports | foreach | 3 |
| imports | parallel | 2 |
| imports | tidyr | 2 |
| imports | doParallel | 1 |
| imports | survminer | 1 |
| imports | doRNG | NA |
| imports | srr | NA |
| suggests | rgenoud | 1 |
| suggests | broom | NA |
| suggests | coxphf | NA |
| suggests | dplyr | NA |
| suggests | knitr | NA |
| suggests | patchwork | NA |
| suggests | pROC | NA |
| suggests | readxl | NA |
| suggests | rmarkdown | NA |
| suggests | spelling | NA |
| suggests | testthat | NA |
| suggests | tibble | NA |
| suggests | withr | NA |
| linking_to | NA | NA |
Click below for tallies of functions used in each package. Locations of each call within this package may be generated locally by running 's <- pkgstats::pkgstats(<path/to/repo>)', and examining the 'external_calls' table.
base
list (55), data.frame (41), if (25), c (24), return (20), tryCatch (16), rep (15), is.null (11), nrow (9), paste (9), unique (9), mean (8), cut (6), names (6), vapply (6), length (5), paste0 (5), round (5), which.min (5), for (4), lapply (4), as.data.frame (3), drop (3), is.na (3), is.numeric (3), logical (3), matrix (3), sort (3), sum (3), switch (3), character (2), do.call (2), factor (2), floor (2), is.finite (2), max (2), summary (2), table (2), which (2), all (1), apply (1), ceiling (1), exp (1), grepl (1), ifelse (1), levels (1), min (1), ncol (1), print (1), range (1), rbind (1), replace (1), row.names (1), sample (1), seq (1), setdiff (1), subset (1)
stats
time (15), sd (10), as.formula (9), median (8), df (6), pchisq (5), quantile (4), aggregate (2), complete.cases (1), na.omit (1), relevel (1)
utils
data (32)
ggplot2
aes (6), geom_line (4), ggplot (4), theme_minimal (4), labs (2), element_text (1), facet_wrap (1), geom_density (1), geom_hline (1), scale_x_continuous (1), theme (1)
survival
coxph (7), Surv (3), survdiff (3), survfit (3), cox.zph (1)
cli
cli_abort (2), cli_progress_bar (2), cli_bullets (1), cli_progress_update (1)
graphics
title (5)
foreach
foreach (3)
parallel
detectCores (1), makeCluster (1)
tidyr
everything (1), pivot_longer (1)
doParallel
registerDoParallel (1)
grDevices
palette (1)
rgenoud
genoud (1)
survminer
ggcoxzph (1)
tools
toTitleCase (1)
NOTE: Some imported packages appear to have no associated function calls; please ensure with author that these 'Imports' are listed appropriately.
3. Statistical Properties
This package features some noteworthy statistical properties which may need to be clarified by a handling editor prior to progressing.
Details of statistical properties (click to open)
The package has:
- code in R (100% in 8 files) and
- 1 authors
- 2 vignettes
- 2 internal data files
- 11 imported packages
- 15 exported functions (median 57 lines of code)
- 41 non-exported functions in R (median 59 lines of code)
Statistical properties of package structure as distributional percentiles in relation to all current CRAN packages The following terminology is used:
-
loc= "Lines of Code" -
fn= "function" -
exp/not_exp= exported / not exported
All parameters are explained as tooltips in the locally-rendered HTML version of this report generated by the checks_to_markdown() function
The final measure (fn_call_network_size) is the total number of calls between functions (in R), or more abstract relationships between code objects in other languages. Values are flagged as "noteworthy" when they lie in the upper or lower 5th percentile.
| measure | value | percentile | noteworthy |
|---|---|---|---|
| files_R | 8 | 47.5 | |
| files_vignettes | 2 | 81.7 | |
| files_tests | 3 | 66.0 | |
| loc_R | 2083 | 82.3 | |
| loc_vignettes | 567 | 79.4 | |
| loc_tests | 1908 | 91.1 | |
| num_vignettes | 2 | 84.9 | |
| data_size_total | 631174 | 92.6 | |
| data_size_median | 315587 | 95.9 | TRUE |
| n_fns_r | 56 | 58.4 | |
| n_fns_r_exported | 15 | 58.4 | |
| n_fns_r_not_exported | 41 | 60.0 | |
| n_fns_per_file_r | 6 | 75.1 | |
| num_params_per_fn | 3 | 29.2 | |
| loc_per_fn_r | 58 | 92.0 | |
| loc_per_fn_r_exp | 57 | 82.5 | |
| loc_per_fn_r_not_exp | 59 | 92.6 | |
| rel_whitespace_R | 9 | 66.5 | |
| rel_whitespace_vignettes | 35 | 81.8 | |
| rel_whitespace_tests | 6 | 69.9 | |
| doclines_per_fn_exp | 102 | 91.1 | |
| doclines_per_fn_not_exp | 0 | 0.0 | TRUE |
| fn_call_network_size | 22 | 46.7 |
3a. Network visualisation
Click to see the interactive network visualisation of calls between objects in package
4. goodpractice and other checks
Details of goodpractice checks (click to open)
3b. goodpractice results
R CMD check with rcmdcheck
R CMD check generated the following error:
- checking tests ...
Running ‘spelling.R’
Comparing ‘spelling.Rout’ to ‘spelling.Rout.save’ ...9,13c9
< Potential spelling errors:
< WORD FOUND IN
< behavior NEWS.md:12
< sesigned README.md:8
< If these are false positive, run
spelling::update_wordlist().All Done!
All Done! Running ‘testthat.R’ ERROR Running the tests in ‘tests/testthat.R’ failed. Last 13 lines of output: Message
-- Optimal Cut-point Number Analysis (Unknown) ---------------------------------
Cannot summarize: no valid model was found.
── Failure ('test-core-functions.R:2171:3'): S3 methods handle missing parameters gracefully ── Adding new snapshot: Code plot(obj) Message Cannot generate plot: no valid IC values found.
[ FAIL 6 | WARN 0 | SKIP 1 | PASS 232 ] Error: ! Test failures. Execution halted
R CMD check generated the following test_fail:
-
This file is part of the standard setup for testthat.
It is recommended that you do not modify it.
Where should you do additional test configuration?
Learn more about the roles of various files in:
* https://r-pkgs.org/testing-design.html#sec-tests-files-overview
* https://testthat.r-lib.org/articles/special-files.html
library(testthat) library(OptSurvCutR)
Attaching package: 'OptSurvCutR'
The following object is masked from 'package:base':
%||%
test_check("OptSurvCutR")
rgenoud (Version 5.9-0.11, Build Date: 2024-10-03)
See http://sekhon.berkeley.edu/rgenoud for additional documentation.
Please cite software as:
Walter Mebane, Jr. and Jasjeet S. Sekhon. 2011.
``Genetic Optimization Using Derivatives: The rgenoud package for R.''
Journal of Statistical Software, 42(11): 1-26.
num_cuts BIC Delta_BIC BIC_Weight Evidence cuts 0 230.61 1.69 20% Substantial NA 1 229.58 0.66 33.5% Substantial 68.79 2 228.92 0.00 46.5% Substantial 45.24, 49.21 num_cuts AIC Delta_AIC AIC_Weight Evidence cuts 0 228.52 3.78 10.8% Moderate NA 1 227.48 2.75 18% Moderate 68.21 2 224.74 0.00 71.2% Substantial 45.07, 47.37 num_cuts AICc Delta_AICc AICc_Weight Evidence cuts 0 228.59 1.03 24.8% Substantial NA 1 227.55 0.00 41.5% Substantial 68.19 2 227.97 0.42 33.7% Substantial 47.19, 50.69 num_cuts BIC Delta_BIC BIC_Weight Evidence cuts 0 230.61 3.59 11.4% Moderate NA 1 229.51 2.49 19.8% Moderate 59.77 2 227.02 0.00 68.8% Substantial 55.26, 55.53 num_cuts BIC Delta_BIC BIC_Weight Evidence cuts 0 238.74 5.29 6.6% Moderate NA 1 233.45 0.00 93.4% Substantial 59.77 num_cuts BIC Delta_BIC BIC_Weight Evidence cuts 0 234.71 0.83 39.8% Substantial NA 1 233.88 0.00 60.2% Substantial 48.75 num_cuts BIC Delta_BIC BIC_Weight Evidence cuts 0 230.61 1.1 36.6% Substantial NA 1 229.51 0.0 63.4% Substantial 59.77 num_cuts BIC Delta_BIC BIC_Weight Evidence cuts 0 230.61 1.03 37.4% Substantial NA 1 229.58 0.00 62.6% Substantial 68.42 i nmin 0.1 is a proportion. Min. group size set to 6. i Finding optimal cut number: method = systematic No valid results found with given parameters. num_cuts BIC Delta_BIC BIC_Weight Evidence cuts 0 4.09 0 50% Substantial NA 1 4.09 0 50% Substantial 34.52 num_cuts BIC Delta_BIC BIC_Weight Evidence cuts 0 4.09 0 50% Substantial NA 1 4.09 0 50% Substantial 47.46 Could not determine optimal cut-point. Could not determine optimal cut-point.
-- Optimal Cut-point Analysis for Survival Data (Genetic) ----------------------
- Predictor: predictor
- Criterion: logrank
- Optimal Log-Rank Statistic: 2.2436 v Recommended Cut-point(s): 47.462 Could not determine optimal cut-point. Could not determine optimal cut-point.
-- Optimal Cut-point Analysis for Survival Data (Systematic) -------------------
-- Group Counts --
Group N Events 1 G1 30 20 2 G2 30 16 -- Median Survival by Group --
Call: survfit(formula = survival::Surv(time, event) ~ group, data = data)
n events median 0.95LCL 0.95UCL
group=G1 30 20 23.8 9.46 NA group=G2 30 16 28.9 11.39 NA -- Final Cox Model Summary --
-- Analysis Parameters ---------------------------------------------------------
- Search Method: Systematic
- Predictor: predictor
- Number of cuts: 1
- Minimum group size (nmin): 20 i Generating Forest Plot of Hazard Ratios... ! Invalid/missing reference group. Defaulting to: G1 Cut-point Stability Analysis (Bootstrap)
Original Optimal Cut-point(s): 37.893 Successful Replicates: 20 / 20 ( 100 %) Failed Replicates: 0
95% Confidence Intervals
Lower Upper
Cut 1 34.347 43.193
Bootstrap Summary Statistics
Cut Mean SD Median Q1 Q3
25% Cut1 38.745 2.376 39.275 37.893 39.281
Hint: Use summary() or plot() to visualize stability.
Cut-point Stability Analysis (Bootstrap)
Original Optimal Cut-point(s): 54.961, 72.866 Successful Replicates: 20 / 20 ( 100 %) Failed Replicates: 0
95% Confidence Intervals
Lower Upper
Cut 1 34.586 71.455 Cut 2 47.978 73.775
Bootstrap Summary Statistics
Cut Mean SD Median Q1 Q3
25% Cut1 57.372 11.563 57.945 49.883 68.011 25%1 Cut2 67.994 8.543 72.024 69.556 72.791
Hint: Use summary() or plot() to visualize stability.
Cut-point Stability Analysis (Bootstrap)
Original Optimal Cut-point(s): 37.893 Successful Replicates: 20 / 20 ( 100 %) Failed Replicates: 0
95% Confidence Intervals
Lower Upper
Cut 1 34.347 57.06
Bootstrap Summary Statistics
Cut Mean SD Median Q1 Q3
25% Cut1 40.221 6.822 39.275 37.893 39.514
Hint: Use summary() or plot() to visualize stability.
Cut-point Stability Analysis (Bootstrap)
Original Optimal Cut-point(s): 59.774 Successful Replicates: 20 / 20 ( 100 %) Failed Replicates: 0
95% Confidence Intervals
Lower Upper
Cut 1 34.409 63.316
Bootstrap Summary Statistics
Cut Mean SD Median Q1 Q3
25% Cut1 48.212 9.471 45.461 41.809 56.559
Hint: Use summary() or plot() to visualize stability.
Cut-point Stability Analysis (Bootstrap)
Original Optimal Cut-point(s): 45.461 Successful Replicates: 20 / 20 ( 100 %) Failed Replicates: 0
95% Confidence Intervals
Lower Upper
Cut 1 34.409 64.633
Bootstrap Summary Statistics
Cut Mean SD Median Q1 Q3
25% Cut1 49.808 10.703 45.461 41.809 59.774
Hint: Use summary() or plot() to visualize stability.
i Using random seed 1 for reproducibility.
i Generating Forest Plot of Hazard Ratios...
No valid optimal cut-point found.
-- Optimal Cut-point Analysis for Survival Data (Systematic) -------------------
-- Optimal Cut-point Analysis for Survival Data (Systematic) -------------------
-- Group Counts --
Group N Events 1 G1 30 20 2 G2 30 16 -- Median Survival by Group --
Call: survfit(formula = survival::Surv(time, event) ~ group, data = data)
n events median 0.95LCL 0.95UCL
group=G1 30 20 23.8 9.46 NA group=G2 30 16 28.9 11.39 NA -- Final Cox Model Summary --
Call: survival::coxph(formula = as.formula(formula_str), data = data)
n= 60, number of events= 36
coef exp(coef) se(coef) z Pr(>|z|)
groupG2 -0.52173 0.59349 0.35511 -1.469 0.142 covariate1 -0.01818 0.98198 0.14227 -0.128 0.898
exp(coef) exp(-coef) lower .95 upper .95
groupG2 0.5935 1.685 0.2959 1.190 covariate1 0.9820 1.018 0.7430 1.298
Concordance= 0.565 (se = 0.054 ) Likelihood ratio test= 2.24 on 2 df, p=0.3 Wald test = 2.21 on 2 df, p=0.3 Score (logrank) test = 2.26 on 2 df, p=0.3
-- Proportional Hazards Assumption Test --
chisq df p
group 0.0757 1 0.783 covariate1 3.0228 1 0.082 GLOBAL 3.3591 2 0.186 -- Analysis Parameters ---------------------------------------------------------
- Search Method: Systematic
- Predictor: predictor
- Number of cuts: 1
- Minimum group size (nmin): 20
- Covariates: covariate1 i Generating Forest Plot of Hazard Ratios... ! Invalid/missing reference group. Defaulting to: G1 i Generating Forest Plot of Hazard Ratios...
-- Optimal Cut-point Number Analysis (Systematic) ------------------------------ num_cuts BIC Delta_BIC BIC_Weight Evidence cuts 0 230.61 1.1 36.6% Substantial NA 1 229.51 0.0 63.4% Substantial 59.77
-- Optimal Cut-point Number Analysis (Systematic) ------------------------------
-- Analysis Parameters ---------------------------------------------------------
-
Search Method: Systematic
-
Predictor: predictor
-
Criterion: BIC
-
Maximum Cuts: 1
-
Minimum Group Size (nmin): 6 num_cuts BIC Delta_BIC BIC_Weight Evidence cuts 0 230.61 1.1 36.6% Substantial NA 1 229.51 0.0 63.4% Substantial 59.77 Group N Events 1 G1 45 30 2 G2 15 6 Call: survfit(formula = survival::Surv(time, event) ~ group, data = data)
n events median 0.95LCL 0.95UCL
group=G1 45 30 23.8 8.77 30.5 group=G2 15 6 33.0 15.57 NA Call: survival::coxph(formula = as.formula(formula_str), data = model_data)
n= 60, number of events= 36
coef exp(coef) se(coef) z Pr(>|z|)
groupG2 -0.6663 0.5136 0.4497 -1.482 0.138
exp(coef) exp(-coef) lower .95 upper .95
groupG2 0.5136 1.947 0.2127 1.24
Concordance= 0.574 (se = 0.035 ) Likelihood ratio test= 2.52 on 1 df, p=0.1 Wald test = 2.19 on 1 df, p=0.1 Score (logrank) test = 2.28 on 1 df, p=0.1
num_cuts BIC Delta_BIC BIC_Weight Evidence cuts 0 230.61 1.1 36.6% Substantial NA 1 229.51 0.0 63.4% Substantial 59.77
-- Optimal Cut-point Number Analysis (Systematic) ------------------------------
-- Optimal Cut-point Number Analysis -------------------------------------------
Method: systematic
Criterion: BIC
num_cuts BIC Delta_BIC BIC_Weight Evidence cuts
0 230.61 1.1 36.6% Substantial NA
1 229.51 0.0 63.4% Substantial 59.77
v Conclusion: 1 cut-point(s) is best based on BIC.
Optimal cuts at: 59.77
Hint: Use summary() for details, plot() to visualize.
-- Details for Best Model ------------------------------------------------------ The best model found has 1 cut-point(s). Cut-point values: 59.77.
-- Group Counts --
Group N Events 1 G1 45 30 2 G2 15 6 -- Median Survival by Group --
Call: survfit(formula = survival::Surv(time, event) ~ group, data = data)
n events median 0.95LCL 0.95UCL
group=G1 45 30 23.8 8.77 30.5 group=G2 15 6 33.0 15.57 NA -- Final Cox Proportional-Hazards Model --
Call: survival::coxph(formula = as.formula(formula_str), data = model_data)
n= 60, number of events= 36
coef exp(coef) se(coef) z Pr(>|z|)
groupG2 -0.6663 0.5136 0.4497 -1.482 0.138
exp(coef) exp(-coef) lower .95 upper .95
groupG2 0.5136 1.947 0.2127 1.24
Concordance= 0.574 (se = 0.035 ) Likelihood ratio test= 2.52 on 1 df, p=0.1 Wald test = 2.19 on 1 df, p=0.1 Score (logrank) test = 2.28 on 1 df, p=0.1
-- Analysis Parameters ---------------------------------------------------------
- Search Method: Systematic
- Predictor: predictor
- Criterion: BIC
- Maximum Cuts: 1
- Minimum Group Size (nmin): 6 Cut-point Stability Analysis (Bootstrap)
Original Optimal Cut-point(s): 37.893 Successful Replicates: 20 / 20 ( 100 %) Failed Replicates: 0
95% Confidence Intervals
Lower Upper
Cut 1 34.347 43.193
Bootstrap Summary Statistics
Cut Mean SD Median Q1 Q3
25% Cut1 38.745 2.376 39.275 37.893 39.281
Hint: Use summary() or plot() to visualize stability.
i nmin 0.2 is a proportion. Min. group size set to 12.
num_cuts BIC Delta_BIC BIC_Weight Evidence cuts
0 230.61 1.10 31.7% Substantial NA
1 229.51 0.00 55% Substantial 59.77
2 232.36 2.85 13.2% Moderate 45.46, 55.01
Cut-point Stability Analysis (Bootstrap)
Original Optimal Cut-point(s): 59.774 Successful Replicates: 20 / 20 ( 100 %) Failed Replicates: 0
95% Confidence Intervals
Lower Upper
Cut 1 34.409 64.633
Bootstrap Summary Statistics
Cut Mean SD Median Q1 Q3
25% Cut1 49.808 10.703 45.461 41.809 59.774
Hint: Use summary() or plot() to visualize stability.
-- Optimal Cut-point Analysis for Survival Data (Systematic) -------------------
-- Group Counts --
Group N Events 1 G1 45 30 2 G2 15 6 -- Median Survival by Group --
Call: survfit(formula = survival::Surv(time, event) ~ group, data = data)
n events median 0.95LCL 0.95UCL
group=G1 45 30 23.8 8.77 30.5 group=G2 15 6 33.0 15.57 NA -- Final Cox Model Summary --
Call: survival::coxph(formula = as.formula(formula_str), data = data)
n= 60, number of events= 36
coef exp(coef) se(coef) z Pr(>|z|)
groupG2 -0.70451 0.49435 0.46678 -1.509 0.131 covariate1 -0.03508 0.96552 0.14474 -0.242 0.808 covariate2B 0.09822 1.10321 0.34695 0.283 0.777
exp(coef) exp(-coef) lower .95 upper .95
groupG2 0.4943 2.0229 0.1980 1.234 covariate1 0.9655 1.0357 0.7270 1.282 covariate2B 1.1032 0.9064 0.5589 2.178
Concordance= 0.598 (se = 0.054 ) Likelihood ratio test= 2.68 on 3 df, p=0.4 Wald test = 2.36 on 3 df, p=0.5 Score (logrank) test = 2.44 on 3 df, p=0.5
-- Proportional Hazards Assumption Test --
chisq df p
group 0.6060 1 0.436 covariate1 3.3920 1 0.066 covariate2 0.0121 1 0.912 GLOBAL 5.5837 3 0.134 -- Analysis Parameters ---------------------------------------------------------
- Search Method: Systematic
- Predictor: predictor
- Number of cuts: 1
- Minimum group size (nmin): 9
- Covariates: covariate1, covariate2 i Generating Forest Plot of Hazard Ratios... ! Invalid/missing reference group. Defaulting to: G1 num_cuts AIC Delta_AIC AIC_Weight Evidence cuts 0 228.52 1.1 36.6% Substantial NA 1 227.42 0.0 63.4% Substantial 59.77
-- Optimal Cut-point Number Analysis (Systematic) ------------------------------
-- Optimal Cut-point Number Analysis -------------------------------------------
Method: systematic
Criterion: AIC
num_cuts AIC Delta_AIC AIC_Weight Evidence cuts
0 228.52 1.1 36.6% Substantial NA
1 227.42 0.0 63.4% Substantial 59.77
v Conclusion: 1 cut-point(s) is best based on AIC.
Optimal cuts at: 59.77
Hint: Use summary() for details, plot() to visualize.
-- Details for Best Model ------------------------------------------------------ The best model found has 1 cut-point(s). Cut-point values: 59.77.
-- Group Counts --
Group N Events 1 G1 45 30 2 G2 15 6 -- Median Survival by Group --
Call: survfit(formula = survival::Surv(time, event) ~ group, data = data)
n events median 0.95LCL 0.95UCL
group=G1 45 30 23.8 8.77 30.5 group=G2 15 6 33.0 15.57 NA -- Final Cox Proportional-Hazards Model --
Call: survival::coxph(formula = as.formula(formula_str), data = model_data)
n= 60, number of events= 36
coef exp(coef) se(coef) z Pr(>|z|)
groupG2 -0.6663 0.5136 0.4497 -1.482 0.138
exp(coef) exp(-coef) lower .95 upper .95
groupG2 0.5136 1.947 0.2127 1.24
Concordance= 0.574 (se = 0.035 ) Likelihood ratio test= 2.52 on 1 df, p=0.1 Wald test = 2.19 on 1 df, p=0.1 Score (logrank) test = 2.28 on 1 df, p=0.1
-- Analysis Parameters ---------------------------------------------------------
- Search Method: Systematic
- Predictor: predictor
- Criterion: AIC
- Maximum Cuts: 1
- Minimum Group Size (nmin): 10 num_cuts AICc Delta_AICc AICc_Weight Evidence cuts 0 228.59 1.1 36.6% Substantial NA 1 227.49 0.0 63.4% Substantial 59.77
-- Optimal Cut-point Number Analysis (Systematic) ------------------------------
-- Optimal Cut-point Number Analysis -------------------------------------------
Method: systematic
Criterion: AICc
num_cuts AICc Delta_AICc AICc_Weight Evidence cuts
0 228.59 1.1 36.6% Substantial NA
1 227.49 0.0 63.4% Substantial 59.77
v Conclusion: 1 cut-point(s) is best based on AICc.
Optimal cuts at: 59.77
Hint: Use summary() for details, plot() to visualize.
-- Details for Best Model ------------------------------------------------------ The best model found has 1 cut-point(s). Cut-point values: 59.77.
-- Group Counts --
Group N Events 1 G1 45 30 2 G2 15 6 -- Median Survival by Group --
Call: survfit(formula = survival::Surv(time, event) ~ group, data = data)
n events median 0.95LCL 0.95UCL
group=G1 45 30 23.8 8.77 30.5 group=G2 15 6 33.0 15.57 NA -- Final Cox Proportional-Hazards Model --
Call: survival::coxph(formula = as.formula(formula_str), data = model_data)
n= 60, number of events= 36
coef exp(coef) se(coef) z Pr(>|z|)
groupG2 -0.6663 0.5136 0.4497 -1.482 0.138
exp(coef) exp(-coef) lower .95 upper .95
groupG2 0.5136 1.947 0.2127 1.24
Concordance= 0.574 (se = 0.035 ) Likelihood ratio test= 2.52 on 1 df, p=0.1 Wald test = 2.19 on 1 df, p=0.1 Score (logrank) test = 2.28 on 1 df, p=0.1
-- Analysis Parameters ---------------------------------------------------------
- Search Method: Systematic
- Predictor: predictor
- Criterion: AICc
- Maximum Cuts: 1
- Minimum Group Size (nmin): 10 num_cuts BIC Delta_BIC BIC_Weight Evidence cuts 0 230.61 1.1 36.6% Substantial NA 1 229.51 0.0 63.4% Substantial 59.77
-- Optimal Cut-point Number Analysis (Systematic) ------------------------------
-- Optimal Cut-point Number Analysis -------------------------------------------
Method: systematic
Criterion: BIC
num_cuts BIC Delta_BIC BIC_Weight Evidence cuts
0 230.61 1.1 36.6% Substantial NA
1 229.51 0.0 63.4% Substantial 59.77
v Conclusion: 1 cut-point(s) is best based on BIC.
Optimal cuts at: 59.77
Hint: Use summary() for details, plot() to visualize.
-- Details for Best Model ------------------------------------------------------ The best model found has 1 cut-point(s). Cut-point values: 59.77.
-- Group Counts --
Group N Events 1 G1 45 30 2 G2 15 6 -- Median Survival by Group --
Call: survfit(formula = survival::Surv(time, event) ~ group, data = data)
n events median 0.95LCL 0.95UCL
group=G1 45 30 23.8 8.77 30.5 group=G2 15 6 33.0 15.57 NA -- Final Cox Proportional-Hazards Model --
Call: survival::coxph(formula = as.formula(formula_str), data = model_data)
n= 60, number of events= 36
coef exp(coef) se(coef) z Pr(>|z|)
groupG2 -0.6663 0.5136 0.4497 -1.482 0.138
exp(coef) exp(-coef) lower .95 upper .95
groupG2 0.5136 1.947 0.2127 1.24
Concordance= 0.574 (se = 0.035 ) Likelihood ratio test= 2.52 on 1 df, p=0.1 Wald test = 2.19 on 1 df, p=0.1 Score (logrank) test = 2.28 on 1 df, p=0.1
-- Analysis Parameters ---------------------------------------------------------
- Search Method: Systematic
- Predictor: predictor
- Criterion: BIC
- Maximum Cuts: 1
- Minimum Group Size (nmin): 10 num_cuts BIC Delta_BIC BIC_Weight Evidence cuts 0 102.25 0.85 39.6% Substantial NA 1 101.40 0.00 60.4% Substantial 43.11 num_cuts BIC Delta_BIC BIC_Weight Evidence cuts 0 102.25 0.85 39.6% Substantial NA 1 101.40 0.00 60.4% Substantial 43.11 No valid results found with given parameters. i nmin 0.1 is a proportion. Min. group size set to 6. i Finding optimal cut number: method = systematic i Testing for 1 cut-point(s)... No valid cut-points found for 1 cut(s) due to model failures or constraints.
-- Optimal Cut-point Number Analysis ------------------------------------------- Method: systematic Criterion: BIC No optimal model could be determined. i nmin 0.1 is a proportion. Min. group size set to 6. i Finding optimal cut number: method = genetic i Running genetic algorithm for 1 cut-point(s)... No valid cut-points found for 1 cut(s) due to genetic algorithm failure or constraints.
-- Optimal Cut-point Number Analysis ------------------------------------------- Method: genetic Criterion: BIC No optimal model could be determined. i nmin 0.1 is a proportion. Min. group size set to 6. i Finding optimal cut number: method = systematic Saving _problems/test-core-functions-2054.R Saving _problems/test-core-functions-2073.R Saving _problems/test-core-functions-2092.R i nmin 0.1 is a proportion. Min. group size set to 6. i Finding optimal cut number: method = systematic Search algorithm failed to produce results. No valid results found with given parameters. i Using random seed 42 for reproducibility. i Validating 1 cut(s) from 'systematic' search using 'logrank'. i Running 20 replicates sequentially (n_cores = 1). v 20 replicates completed. Cut-point Stability Analysis (Bootstrap)
Original Optimal Cut-point(s): 37.893 Successful Replicates: 20 / 20 ( 100 %) Failed Replicates: 0
95% Confidence Intervals
Lower Upper
Cut 1 34.347 43.193
Bootstrap Summary Statistics
Cut Mean SD Median Q1 Q3
25% Cut1 38.745 2.376 39.275 37.893 39.281
Hint: Use summary() or plot() to visualize stability.
Saving _problems/test-core-functions-2169.R
Saving _problems/test-core-functions-2170.R
Saving _problems/test-core-functions-2171.R
[ FAIL 6 | WARN 0 | SKIP 1 | PASS 232 ]
══ Skipped tests (1) ═══════════════════════════════════════════════════════════ • Systematic p-value search failed. (1): 'test-core-functions.R:1225:3'
══ Failed tests ════════════════════════════════════════════════════════════════ ── Failure ('test-core-functions.R:2054:3'): Coverage: summary.find_cutpoint_number_result – no valid IC ── Adding new snapshot: Code summary(obj) Message
-- Optimal Cut-point Number Analysis (Systematic) ------------------------------ Cannot summarize: no valid model was found. ── Failure ('test-core-functions.R:2073:3'): Coverage: plot.find_cutpoint_number_result – all IC NA ── Adding new snapshot: Code plot(obj) Message Cannot generate plot: no valid IC values found. ── Failure ('test-core-functions.R:2092:3'): summary handles pathological IC (mix of NA/Inf) ── Adding new snapshot: Code summary(obj) Message
-- Optimal Cut-point Number Analysis (Systematic) ------------------------------ Cannot summarize: no valid model was found. ── Failure ('test-core-functions.R:2169:3'): S3 methods handle missing parameters gracefully ── Adding new snapshot: Code print(obj) Message
-- Optimal Cut-point Number Analysis ------------------------------------------- Method: Unknown Criterion: IC No optimal model could be determined. ── Failure ('test-core-functions.R:2170:3'): S3 methods handle missing parameters gracefully ── Adding new snapshot: Code summary(obj) Message
-- Optimal Cut-point Number Analysis (Unknown) --------------------------------- Cannot summarize: no valid model was found. ── Failure ('test-core-functions.R:2171:3'): S3 methods handle missing parameters gracefully ── Adding new snapshot: Code plot(obj) Message Cannot generate plot: no valid IC values found.
[ FAIL 6 | WARN 0 | SKIP 1 | PASS 232 ] Error: ! Test failures. Execution halted
R CMD check generated the following check_fails:
- no_import_package_as_a_whole
- rcmdcheck_tests_pass
Cyclocomplexity with cyclocomp
The following functions have cyclocomplexity >= 15:
| function | cyclocomplexity |
|---|---|
| validate_cutpoint | 45 |
| find_cutpoint_number | 41 |
| summary.find_cutpoint_number_result | 24 |
| find_cutpoint | 22 |
| print.find_cutpoint_number_result | 22 |
| plot.find_cutpoint | 15 |
| summary.find_cutpoint | 15 |
Static code analyses with lintr
lintr found no issues with this package!
5. Other Checks
Details of other checks (click to open)
:heavy_multiplication_x: The following 2 function names are duplicated in other packages:
-
-
%||%from infix, hset, formatters, fuj, arkhe, iNZightTools, powerbrmsINLA, arcgisutils, leakr
-
-
-
plot_diagnosticsfrom testarguments
-
Package Versions
| package | version |
|---|---|
| pkgstats | 0.2.0.75 |
| pkgcheck | 0.1.2.240 |
| srr | 0.1.4.9 |
Editor-in-Chief Instructions:
Processing may not proceed until the items marked with :heavy_multiplication_x: have been resolved.
Dear Editor,
I have updated the package (v.0.1.9.1) and the latest run passed all the requirements: https://github.com/paytonyau/OptSurvCutR/actions/runs/19518696934/job/55880525000
Please let me know if there is anything need to be fixed. Thank you.
Best, Payton
Thanks @paytonyau. Please start the bot checks yourself to confirm by typing @ropensci-review-bot check package.
Also note that stats submissions should generally go through a pre-submission process, and there should have been a check-box in your submission template confirming that, and linking to the pre-submission issue. But given that you've already done all the work complying with our statistical standards[^1], we can leave this as a full submission now, and hopefully get your package in shape to start a review process fairly quickly.
[^1]: Although see below
One immediate point that needs addressing is that all of your srr tags are @srrstats, yet you've got lines like here and here like this:
@srrstats {RE4.3, RE4.4, RE4.5, RE4.6, RE4.7, RE4.8, RE4.9,
#' RE4.10, RE4.11, RE4.12, RE4.13, RE4.14, RE4.15, RE4.16,
#' RE4.18} N/A (no stepwise, LASSO, etc.).
Lines like that should be tagged with @srrstatsNA, to clearly flag that they're not applicable. Once you've done that, please also confirm here with @ropensci-review-bot check srr.
I also note that the numbering of some standards compliance statements seems not quite right? For example,
-
@srrstats {G2.16} Accepts data.frame and tibble. -
@srrstats {G2.15} NSE used in plotting/data manipulation.
for the respective standards,
- G2.15 Functions should never assume non-missingness, and should never pass data with potential missing values to any base routines with default na.rm = FALSE-type parameters...
- G2.16 All functions should also provide options to handle undefined values ... including potentially ignoring or removing such values.
Can you please first have another go over your standards compliance statements, and ensure everything is aligned, and all non-applicable standards are flagged @srrstatsNA? Use check srr to get the bot to issue brief statements of standards compliance, and check package to do a full package check once you've resolved the issue flagged above.
Thanks!
Thanks for the review @mpadge and for allowing the submission to proceed despite the missing pre-submission step—I appreciate that.
I have addressed the points raised above:
I have updated the documentation to use @srrstatsNA for all non-applicable standards. I have reviewed the full list of standards to ensure the descriptions align with the correct standard numbers (including the mismatches flagged in G2.15 and G2.16). I am now triggering the checks as requested: @ropensci-review-bot check package
@paytonyau Sorry if i wasn't clear enough, but the bot commands have to be issued separately, as single, self-contained comments.
@ropensci-review-bot check package, thank. 😊
I'm sorry human, I don't understand that. You can see what commands I support by typing:
@ropensci-review-bot help
@ropensci-review-bot check package
Thanks, about to send the query.
:rocket:
Editor check started
:wave:
Checks for OptSurvCutR (v0.1.9.2)
git hash: 918b7cb8
- :heavy_check_mark: Package name is available
- :heavy_check_mark: has a 'codemeta.json' file.
- :heavy_check_mark: has a 'contributing' file.
- :heavy_check_mark: uses 'roxygen2'.
- :heavy_check_mark: 'DESCRIPTION' has a URL field.
- :heavy_check_mark: 'DESCRIPTION' has a BugReports field.
- :heavy_check_mark: Package has at least one HTML vignette
- :heavy_check_mark: All functions have examples.
- :heavy_check_mark: Package has continuous integration checks.
- :heavy_check_mark: Package coverage is 87.8%.
- :heavy_check_mark: This is a statistical package which complies with all applicable standards
- :heavy_check_mark: R CMD check found no errors.
- :heavy_check_mark: R CMD check found no warnings.
- :eyes: Some goodpractice linters failed.
(Checks marked with :eyes: may be optionally addressed.)
Package License: GPL-3 + file LICENSE
1. rOpenSci Statistical Standards (srr package)
This package is in the following category:
- Regression and Supervised Learning
:heavy_check_mark: All applicable standards [v0.2.0] have been documented in this package (247 complied with; 46 N/A standards)
Click to see the report of author-reported standards compliance of the package with links to associated lines of code, which can be re-generated locally by running the srr_report() function from within a local clone of the repository.
2. Package Dependencies
Details of Package Dependency Usage (click to open)
The table below tallies all function calls to all packages ('ncalls'), both internal (r-base + recommended, along with the package itself), and external (imported and suggested packages). 'NA' values indicate packages to which no identified calls to R functions could be found. Note that these results are generated by an automated code-tagging system which may not be entirely accurate.
| type | package | ncalls |
|---|---|---|
| internal | base | 353 |
| internal | utils | 33 |
| internal | graphics | 5 |
| internal | grDevices | 1 |
| internal | tools | 1 |
| imports | stats | 62 |
| imports | ggplot2 | 26 |
| imports | survival | 17 |
| imports | cli | 6 |
| imports | foreach | 3 |
| imports | parallel | 2 |
| imports | tidyr | 2 |
| imports | doParallel | 1 |
| imports | survminer | 1 |
| imports | doRNG | NA |
| suggests | rgenoud | 1 |
| suggests | broom | NA |
| suggests | dplyr | NA |
| suggests | knitr | NA |
| suggests | readxl | NA |
| suggests | rmarkdown | NA |
| suggests | spelling | NA |
| suggests | testthat | NA |
| linking_to | NA | NA |
Click below for tallies of functions used in each package. Locations of each call within this package may be generated locally by running 's <- pkgstats::pkgstats(<path/to/repo>)', and examining the 'external_calls' table.
base
list (55), data.frame (41), if (25), c (24), return (20), tryCatch (16), rep (15), is.null (11), nrow (9), paste (9), unique (9), mean (8), cut (6), names (6), paste0 (6), vapply (6), length (5), round (5), which.min (5), floor (4), for (4), lapply (4), as.data.frame (3), drop (3), is.na (3), is.numeric (3), logical (3), matrix (3), sort (3), sum (3), switch (3), character (2), do.call (2), factor (2), is.finite (2), max (2), summary (2), table (2), which (2), all (1), apply (1), exp (1), grepl (1), ifelse (1), levels (1), min (1), ncol (1), print (1), range (1), rbind (1), replace (1), row.names (1), sample (1), seq (1), setdiff (1), subset (1)
stats
time (15), sd (10), as.formula (9), median (8), df (6), pchisq (5), quantile (4), aggregate (2), complete.cases (1), na.omit (1), relevel (1)
utils
data (32), packageVersion (1)
ggplot2
aes (6), geom_line (4), ggplot (4), theme_minimal (4), labs (2), element_text (1), facet_wrap (1), geom_density (1), geom_hline (1), scale_x_continuous (1), theme (1)
survival
coxph (7), Surv (3), survdiff (3), survfit (3), cox.zph (1)
cli
cli_abort (2), cli_progress_bar (2), cli_bullets (1), cli_progress_update (1)
graphics
title (5)
foreach
foreach (3)
parallel
detectCores (1), makeCluster (1)
tidyr
everything (1), pivot_longer (1)
doParallel
registerDoParallel (1)
grDevices
palette (1)
rgenoud
genoud (1)
survminer
ggcoxzph (1)
tools
toTitleCase (1)
NOTE: Some imported packages appear to have no associated function calls; please ensure with author that these 'Imports' are listed appropriately.
3. Statistical Properties
This package features some noteworthy statistical properties which may need to be clarified by a handling editor prior to progressing.
Details of statistical properties (click to open)
The package has:
- code in R (100% in 9 files) and
- 1 authors
- 2 vignettes
- 2 internal data files
- 10 imported packages
- 14 exported functions (median 58 lines of code)
- 44 non-exported functions in R (median 52 lines of code)
Statistical properties of package structure as distributional percentiles in relation to all current CRAN packages The following terminology is used:
-
loc= "Lines of Code" -
fn= "function" -
exp/not_exp= exported / not exported
All parameters are explained as tooltips in the locally-rendered HTML version of this report generated by the checks_to_markdown() function
The final measure (fn_call_network_size) is the total number of calls between functions (in R), or more abstract relationships between code objects in other languages. Values are flagged as "noteworthy" when they lie in the upper or lower 5th percentile.
| measure | value | percentile | noteworthy |
|---|---|---|---|
| files_R | 9 | 51.9 | |
| files_vignettes | 2 | 81.7 | |
| files_tests | 3 | 65.9 | |
| loc_R | 2124 | 82.6 | |
| loc_vignettes | 564 | 79.2 | |
| loc_tests | 1888 | 90.9 | |
| num_vignettes | 2 | 84.9 | |
| data_size_total | 631174 | 92.6 | |
| data_size_median | 315587 | 95.9 | TRUE |
| n_fns_r | 58 | 59.6 | |
| n_fns_r_exported | 14 | 56.2 | |
| n_fns_r_not_exported | 44 | 62.0 | |
| n_fns_per_file_r | 5 | 69.4 | |
| num_params_per_fn | 4 | 48.3 | |
| loc_per_fn_r | 56 | 91.4 | |
| loc_per_fn_r_exp | 58 | 82.9 | |
| loc_per_fn_r_not_exp | 52 | 91.0 | |
| rel_whitespace_R | 9 | 67.8 | |
| rel_whitespace_vignettes | 34 | 80.9 | |
| rel_whitespace_tests | 6 | 70.5 | |
| doclines_per_fn_exp | 104 | 91.7 | |
| doclines_per_fn_not_exp | 0 | 0.0 | TRUE |
| fn_call_network_size | 22 | 46.7 |
3a. Network visualisation
Click to see the interactive network visualisation of calls between objects in package
4. goodpractice and other checks
Details of goodpractice checks (click to open)
3a. Continuous Integration Badges
GitHub Workflow Results
| id | name | conclusion | sha | run_number | date |
|---|---|---|---|---|---|
| 19645602442 | pages build and deployment | success | 918b7c | 13 | 2025-11-24 |
| 19645602996 | pkgcheck | success | 918b7c | 3 | 2025-11-24 |
| 19645602978 | R-CMD-check.yaml | success | 918b7c | 15 | 2025-11-24 |
3b. goodpractice results
Test coverage with covr
Package coverage: 87.81
Cyclocomplexity with cyclocomp
The following functions have cyclocomplexity >= 15:
| function | cyclocomplexity |
|---|---|
| validate_cutpoint | 47 |
| find_cutpoint_number | 41 |
| summary.find_cutpoint_number_result | 24 |
| find_cutpoint | 22 |
| print.find_cutpoint_number_result | 22 |
| plot.find_cutpoint | 15 |
| summary.find_cutpoint | 15 |
Static code analyses with lintr
lintr found no issues with this package!
Package Versions
| package | version |
|---|---|
| pkgstats | 0.2.0.93 |
| pkgcheck | 0.1.2.240 |
| srr | 0.1.4.9 |
Editor-in-Chief Instructions:
This package is in top shape and may be passed on to a handling editor
Thanks @paytonyau, this now looks ready to proceed. Before we do, we do actually need all stats submissions to have an initial pre-submission enquiry. To do that, can you please edit the initial comment (click the "..." on top-right), and:
- Copy all text to your local editor
- Also copy to a separate location the expected text of our pre-submission template
- Copy across all values from Step 1 into template of Step 2, updating where necessary
- Update the original comment to the structure of the pre-submission template.
Let us know once you've done that, and we'll proceed from there. Thanks!
And note that you've slight edited the version above, by replacing the original header items like
Submitting Author Name: Name
vwith dashed versions:
- Submitting Author Name: Name
All initial fields need to retain the exact structure in the original template, as they are used by our bot to extract and process important data. So please ensure everything in the template retains its structure.
Thanks @mpadge . I have updated the information, and it should be ready to proceed.
@paytonyau The initial comment is still in the format from the full submission template. To repeat the requested steps from there, could you please:
- Copy all text to your local editor
- Also copy to a separate location the expected text of our pre-submission template
- Copy across all values from Step 1 into template of Step 2, updating where necessary
- Update the original comment to the structure of the pre-submission template.
@ropensci-review-bot check package
Thanks, about to send the query.
:rocket:
The following problem was found in your submission template:
- 'statsgrade' variable must be one of [bronze, silver, gold] Editors: Please ensure these problems with the submission template are rectified. Package checks have been started regardless.
:wave:
@ropensci-review-bot check package
Thanks, about to send the query.
:rocket:
The following problem was found in your submission template:
- 'statsgrade' variable must be one of [bronze, silver, gold] Editors: Please ensure these problems with the submission template are rectified. Package checks have been started regardless.
:wave:
Note: The following R packages were unable to be installed/upgraded on our system: [pbkrtest, car, rstatix, ggpubr, survminer]; some checks may be unreliable.
Checks for OptSurvCutR (v0.1.9.2)
git hash: 918b7cb8
- :heavy_check_mark: Package name is available
- :heavy_check_mark: has a 'contributing' file.
- :heavy_check_mark: uses 'roxygen2'.
- :heavy_check_mark: 'DESCRIPTION' has a URL field.
- :heavy_check_mark: 'DESCRIPTION' has a BugReports field.
- :heavy_check_mark: Package has at least one HTML vignette
- :heavy_check_mark: All functions have examples.
- :heavy_check_mark: Package has continuous integration checks.
- :heavy_multiplication_x: Package coverage failed
- :heavy_check_mark: This is a statistical package which complies with all applicable standards
- :heavy_multiplication_x: R CMD check process failed with message: 'Build process failed'.
- :eyes: Some goodpractice linters failed.
Important: All failing checks above must be addressed prior to proceeding
(Checks marked with :eyes: may be optionally addressed.)
Package License: GPL-3 + file LICENSE
1. rOpenSci Statistical Standards (srr package)
This package is in the following category:
- Regression and Supervised Learning
:heavy_check_mark: All applicable standards [v0.2.0] have been documented in this package (247 complied with; 46 N/A standards)
Click to see the report of author-reported standards compliance of the package with links to associated lines of code, which can be re-generated locally by running the srr_report() function from within a local clone of the repository.
2. Package Dependencies
Details of Package Dependency Usage (click to open)
The table below tallies all function calls to all packages ('ncalls'), both internal (r-base + recommended, along with the package itself), and external (imported and suggested packages). 'NA' values indicate packages to which no identified calls to R functions could be found. Note that these results are generated by an automated code-tagging system which may not be entirely accurate.
| type | package | ncalls |
|---|---|---|
| internal | base | 353 |
| internal | utils | 33 |
| internal | graphics | 5 |
| internal | grDevices | 1 |
| internal | tools | 1 |
| imports | stats | 62 |
| imports | ggplot2 | 26 |
| imports | survival | 17 |
| imports | cli | 6 |
| imports | foreach | 3 |
| imports | parallel | 2 |
| imports | tidyr | 2 |
| imports | doParallel | 1 |
| imports | survminer | 1 |
| imports | doRNG | NA |
| suggests | rgenoud | 1 |
| suggests | broom | NA |
| suggests | dplyr | NA |
| suggests | knitr | NA |
| suggests | readxl | NA |
| suggests | rmarkdown | NA |
| suggests | spelling | NA |
| suggests | testthat | NA |
| linking_to | NA | NA |
Click below for tallies of functions used in each package. Locations of each call within this package may be generated locally by running 's <- pkgstats::pkgstats(<path/to/repo>)', and examining the 'external_calls' table.
base
list (55), data.frame (41), if (25), c (24), return (20), tryCatch (16), rep (15), is.null (11), nrow (9), paste (9), unique (9), mean (8), cut (6), names (6), paste0 (6), vapply (6), length (5), round (5), which.min (5), floor (4), for (4), lapply (4), as.data.frame (3), drop (3), is.na (3), is.numeric (3), logical (3), matrix (3), sort (3), sum (3), switch (3), character (2), do.call (2), factor (2), is.finite (2), max (2), summary (2), table (2), which (2), all (1), apply (1), exp (1), grepl (1), ifelse (1), levels (1), min (1), ncol (1), print (1), range (1), rbind (1), replace (1), row.names (1), sample (1), seq (1), setdiff (1), subset (1)
stats
time (15), sd (10), as.formula (9), median (8), df (6), pchisq (5), quantile (4), aggregate (2), complete.cases (1), na.omit (1), relevel (1)
utils
data (32), packageVersion (1)
ggplot2
aes (6), geom_line (4), ggplot (4), theme_minimal (4), labs (2), element_text (1), facet_wrap (1), geom_density (1), geom_hline (1), scale_x_continuous (1), theme (1)
survival
coxph (7), Surv (3), survdiff (3), survfit (3), cox.zph (1)
cli
cli_abort (2), cli_progress_bar (2), cli_bullets (1), cli_progress_update (1)
graphics
title (5)
foreach
foreach (3)
parallel
detectCores (1), makeCluster (1)
tidyr
everything (1), pivot_longer (1)
doParallel
registerDoParallel (1)
grDevices
palette (1)
rgenoud
genoud (1)
survminer
ggcoxzph (1)
tools
toTitleCase (1)
NOTE: Some imported packages appear to have no associated function calls; please ensure with author that these 'Imports' are listed appropriately.
3. Statistical Properties
This package features some noteworthy statistical properties which may need to be clarified by a handling editor prior to progressing.
Details of statistical properties (click to open)
The package has:
- code in R (100% in 9 files) and
- 1 authors
- 2 vignettes
- 2 internal data files
- 10 imported packages
- 14 exported functions (median 58 lines of code)
- 14 non-exported functions in R (median 37 lines of code)
Statistical properties of package structure as distributional percentiles in relation to all current CRAN packages The following terminology is used:
-
loc= "Lines of Code" -
fn= "function" -
exp/not_exp= exported / not exported
All parameters are explained as tooltips in the locally-rendered HTML version of this report generated by the checks_to_markdown() function
The final measure (fn_call_network_size) is the total number of calls between functions (in R), or more abstract relationships between code objects in other languages. Values are flagged as "noteworthy" when they lie in the upper or lower 5th percentile.
| measure | value | percentile | noteworthy |
|---|---|---|---|
| files_R | 9 | 53.6 | |
| files_vignettes | 2 | 82.6 | |
| files_tests | 3 | 66.6 | |
| loc_R | 2124 | 82.2 | |
| loc_vignettes | 564 | 78.9 | |
| loc_tests | 1888 | 90.9 | |
| num_vignettes | 2 | 85.0 | |
| data_size_total | 631174 | 93.1 | |
| data_size_median | 315587 | 96.0 | TRUE |
| n_fns_r | 28 | 60.5 | |
| n_fns_r_exported | 14 | 56.3 | |
| n_fns_r_not_exported | 14 | 68.7 | |
| n_fns_per_file_r | 5 | 72.2 | |
| num_params_per_fn | 4 | 49.9 | |
| loc_per_fn_r | 52 | 87.7 | |
| loc_per_fn_r_exp | 58 | 82.9 | |
| loc_per_fn_r_not_exp | 37 | 95.3 | TRUE |
| rel_whitespace_R | 9 | 68.2 | |
| rel_whitespace_vignettes | 34 | 92.2 | |
| rel_whitespace_tests | 6 | 85.6 | |
| doclines_per_fn_exp | 104 | 91.6 | |
| doclines_per_fn_not_exp | 18 | 94.7 | |
| fn_call_network_size | 22 | 47.9 |
3a. Network visualisation
Click to see the interactive network visualisation of calls between objects in package
4. goodpractice and other checks
Details of goodpractice checks (click to open)
3a. Continuous Integration Badges
GitHub Workflow Results
| id | name | conclusion | sha | run_number | date |
|---|---|---|---|---|---|
| 19645602996 | pkgcheck | success | 918b7c | 3 | 2025-11-24 |
| 19645602978 | R-CMD-check.yaml | success | 918b7c | 15 | 2025-11-24 |
3b. goodpractice results
R CMD check with rcmdcheck
R CMD check generated the following error:
- Error in proc$get_built_file() : Build process failed
Cyclocomplexity with cyclocomp
Error : Build failed, unknown error, standard output:
- checking for file ‘OptSurvCutR/DESCRIPTION’ ... OK
- preparing ‘OptSurvCutR’:
- checking DESCRIPTION meta-information ... OK
- installing the package to build vignettes ----------------------------------- ERROR: dependency ‘survminer’ is not available for package ‘OptSurvCutR’ Perhaps try a variation of: install.packages('survminer')
- removing ‘/tmp/RtmpBDeAEk/Rinsta0996beded62/OptSurvCutR’ ----------------------------------- ERROR: package installation failed
Static code analyses with lintr
lintr found no issues with this package!
Package Versions
| package | version |
|---|---|
| pkgstats | 0.2.1.14 |
| pkgcheck | 0.1.2.262 |
| srr | 0.1.4.12 |
Editor-in-Chief Instructions:
Processing may not proceed until the items marked with :heavy_multiplication_x: have been resolved.
Checks for OptSurvCutR (v0.1.9.2)
git hash: 918b7cb8
- :heavy_check_mark: Package name is available
- :heavy_check_mark: has a 'contributing' file.
- :heavy_check_mark: uses 'roxygen2'.
- :heavy_check_mark: 'DESCRIPTION' has a URL field.
- :heavy_check_mark: 'DESCRIPTION' has a BugReports field.
- :heavy_check_mark: Package has at least one HTML vignette
- :heavy_check_mark: All functions have examples.
- :heavy_check_mark: Package has continuous integration checks.
- :heavy_multiplication_x: Package coverage failed
- :heavy_check_mark: This is a statistical package which complies with all applicable standards
- :heavy_multiplication_x: R CMD check process failed with message: 'Build process failed'.
- :eyes: Some goodpractice linters failed.
Important: All failing checks above must be addressed prior to proceeding
(Checks marked with :eyes: may be optionally addressed.)
Package License: GPL-3 + file LICENSE
1. rOpenSci Statistical Standards (srr package)
This package is in the following category:
- Regression and Supervised Learning
:heavy_check_mark: All applicable standards [v0.2.0] have been documented in this package (247 complied with; 46 N/A standards)
Click to see the report of author-reported standards compliance of the package with links to associated lines of code, which can be re-generated locally by running the srr_report() function from within a local clone of the repository.
2. Package Dependencies
Details of Package Dependency Usage (click to open)
The table below tallies all function calls to all packages ('ncalls'), both internal (r-base + recommended, along with the package itself), and external (imported and suggested packages). 'NA' values indicate packages to which no identified calls to R functions could be found. Note that these results are generated by an automated code-tagging system which may not be entirely accurate.
| type | package | ncalls |
|---|---|---|
| internal | base | 353 |
| internal | utils | 33 |
| internal | graphics | 5 |
| internal | grDevices | 1 |
| internal | tools | 1 |
| imports | stats | 62 |
| imports | ggplot2 | 26 |
| imports | survival | 17 |
| imports | cli | 6 |
| imports | foreach | 3 |
| imports | parallel | 2 |
| imports | tidyr | 2 |
| imports | doParallel | 1 |
| imports | survminer | 1 |
| imports | doRNG | NA |
| suggests | rgenoud | 1 |
| suggests | broom | NA |
| suggests | dplyr | NA |
| suggests | knitr | NA |
| suggests | readxl | NA |
| suggests | rmarkdown | NA |
| suggests | spelling | NA |
| suggests | testthat | NA |
| linking_to | NA | NA |
Click below for tallies of functions used in each package. Locations of each call within this package may be generated locally by running 's <- pkgstats::pkgstats(<path/to/repo>)', and examining the 'external_calls' table.
base
list (55), data.frame (41), if (25), c (24), return (20), tryCatch (16), rep (15), is.null (11), nrow (9), paste (9), unique (9), mean (8), cut (6), names (6), paste0 (6), vapply (6), length (5), round (5), which.min (5), floor (4), for (4), lapply (4), as.data.frame (3), drop (3), is.na (3), is.numeric (3), logical (3), matrix (3), sort (3), sum (3), switch (3), character (2), do.call (2), factor (2), is.finite (2), max (2), summary (2), table (2), which (2), all (1), apply (1), exp (1), grepl (1), ifelse (1), levels (1), min (1), ncol (1), print (1), range (1), rbind (1), replace (1), row.names (1), sample (1), seq (1), setdiff (1), subset (1)
stats
time (15), sd (10), as.formula (9), median (8), df (6), pchisq (5), quantile (4), aggregate (2), complete.cases (1), na.omit (1), relevel (1)
utils
data (32), packageVersion (1)
ggplot2
aes (6), geom_line (4), ggplot (4), theme_minimal (4), labs (2), element_text (1), facet_wrap (1), geom_density (1), geom_hline (1), scale_x_continuous (1), theme (1)
survival
coxph (7), Surv (3), survdiff (3), survfit (3), cox.zph (1)
cli
cli_abort (2), cli_progress_bar (2), cli_bullets (1), cli_progress_update (1)
graphics
title (5)
foreach
foreach (3)
parallel
detectCores (1), makeCluster (1)
tidyr
everything (1), pivot_longer (1)
doParallel
registerDoParallel (1)
grDevices
palette (1)
rgenoud
genoud (1)
survminer
ggcoxzph (1)
tools
toTitleCase (1)
NOTE: Some imported packages appear to have no associated function calls; please ensure with author that these 'Imports' are listed appropriately.
3. Statistical Properties
This package features some noteworthy statistical properties which may need to be clarified by a handling editor prior to progressing.
Details of statistical properties (click to open)
The package has:
- code in R (100% in 9 files) and
- 1 authors
- 2 vignettes
- 2 internal data files
- 10 imported packages
- 14 exported functions (median 58 lines of code)
- 14 non-exported functions in R (median 37 lines of code)
Statistical properties of package structure as distributional percentiles in relation to all current CRAN packages The following terminology is used:
-
loc= "Lines of Code" -
fn= "function" -
exp/not_exp= exported / not exported
All parameters are explained as tooltips in the locally-rendered HTML version of this report generated by the checks_to_markdown() function
The final measure (fn_call_network_size) is the total number of calls between functions (in R), or more abstract relationships between code objects in other languages. Values are flagged as "noteworthy" when they lie in the upper or lower 5th percentile.
| measure | value | percentile | noteworthy |
|---|---|---|---|
| files_R | 9 | 53.6 | |
| files_vignettes | 2 | 82.6 | |
| files_tests | 3 | 66.6 | |
| loc_R | 2124 | 82.2 | |
| loc_vignettes | 564 | 78.9 | |
| loc_tests | 1888 | 90.9 | |
| num_vignettes | 2 | 85.0 | |
| data_size_total | 631174 | 93.1 | |
| data_size_median | 315587 | 96.0 | TRUE |
| n_fns_r | 28 | 60.5 | |
| n_fns_r_exported | 14 | 56.3 | |
| n_fns_r_not_exported | 14 | 68.7 | |
| n_fns_per_file_r | 5 | 72.2 | |
| num_params_per_fn | 4 | 49.9 | |
| loc_per_fn_r | 52 | 87.7 | |
| loc_per_fn_r_exp | 58 | 82.9 | |
| loc_per_fn_r_not_exp | 37 | 95.3 | TRUE |
| rel_whitespace_R | 9 | 68.2 | |
| rel_whitespace_vignettes | 34 | 92.2 | |
| rel_whitespace_tests | 6 | 85.6 | |
| doclines_per_fn_exp | 104 | 91.6 | |
| doclines_per_fn_not_exp | 18 | 94.7 | |
| fn_call_network_size | 22 | 47.9 |
3a. Network visualisation
Click to see the interactive network visualisation of calls between objects in package
4. goodpractice and other checks
Details of goodpractice checks (click to open)
3a. Continuous Integration Badges
GitHub Workflow Results
| id | name | conclusion | sha | run_number | date |
|---|---|---|---|---|---|
| 19645602996 | pkgcheck | success | 918b7c | 3 | 2025-11-24 |
| 19645602978 | R-CMD-check.yaml | success | 918b7c | 15 | 2025-11-24 |
3b. goodpractice results
R CMD check with rcmdcheck
R CMD check generated the following error:
- Error in proc$get_built_file() : Build process failed
Cyclocomplexity with cyclocomp
Error : Build failed, unknown error, standard output:
- checking for file ‘OptSurvCutR/DESCRIPTION’ ... OK
- preparing ‘OptSurvCutR’:
- checking DESCRIPTION meta-information ... OK
- installing the package to build vignettes ----------------------------------- ERROR: dependency ‘survminer’ is not available for package ‘OptSurvCutR’ Perhaps try a variation of: install.packages('survminer')
- removing ‘/tmp/RtmpBDeAEk/Rinsta0996beded62/OptSurvCutR’ ----------------------------------- ERROR: package installation failed
Static code analyses with lintr
lintr found no issues with this package!
Package Versions
| package | version |
|---|---|
| pkgstats | 0.2.1.14 |
| pkgcheck | 0.1.2.262 |
| srr | 0.1.4.12 |
Editor-in-Chief Instructions:
Processing may not proceed until the items marked with :heavy_multiplication_x: have been resolved.
@ropensci-review-bot check package
Thanks, about to send the query.
:rocket:
The following problem was found in your submission template:
- 'statsgrade' variable must be one of [bronze, silver, gold] Editors: Please ensure these problems with the submission template are rectified. Package checks have been started regardless.
:wave:
Checks for OptSurvCutR (v0.1.9.2)
git hash: 918b7cb8
- :heavy_check_mark: Package name is available
- :heavy_check_mark: has a 'contributing' file.
- :heavy_check_mark: uses 'roxygen2'.
- :heavy_check_mark: 'DESCRIPTION' has a URL field.
- :heavy_check_mark: 'DESCRIPTION' has a BugReports field.
- :heavy_check_mark: Package has at least one HTML vignette
- :heavy_check_mark: All functions have examples.
- :heavy_check_mark: Package has continuous integration checks.
- :heavy_multiplication_x: Package coverage failed
- :heavy_check_mark: This is a statistical package which complies with all applicable standards
- :heavy_multiplication_x: R CMD check process failed with message: 'Build process failed'.
- :eyes: Some goodpractice linters failed.
Important: All failing checks above must be addressed prior to proceeding
(Checks marked with :eyes: may be optionally addressed.)
Package License: GPL-3 + file LICENSE
1. rOpenSci Statistical Standards (srr package)
This package is in the following category:
- Regression and Supervised Learning
:heavy_check_mark: All applicable standards [v0.2.0] have been documented in this package (247 complied with; 46 N/A standards)
Click to see the report of author-reported standards compliance of the package with links to associated lines of code, which can be re-generated locally by running the srr_report() function from within a local clone of the repository.
2. Package Dependencies
Details of Package Dependency Usage (click to open)
The table below tallies all function calls to all packages ('ncalls'), both internal (r-base + recommended, along with the package itself), and external (imported and suggested packages). 'NA' values indicate packages to which no identified calls to R functions could be found. Note that these results are generated by an automated code-tagging system which may not be entirely accurate.
| type | package | ncalls |
|---|---|---|
| internal | base | 353 |
| internal | utils | 33 |
| internal | graphics | 5 |
| internal | grDevices | 1 |
| internal | tools | 1 |
| imports | stats | 62 |
| imports | ggplot2 | 26 |
| imports | survival | 17 |
| imports | cli | 6 |
| imports | foreach | 3 |
| imports | parallel | 2 |
| imports | tidyr | 2 |
| imports | doParallel | 1 |
| imports | survminer | 1 |
| imports | doRNG | NA |
| suggests | rgenoud | 1 |
| suggests | broom | NA |
| suggests | dplyr | NA |
| suggests | knitr | NA |
| suggests | readxl | NA |
| suggests | rmarkdown | NA |
| suggests | spelling | NA |
| suggests | testthat | NA |
| linking_to | NA | NA |
Click below for tallies of functions used in each package. Locations of each call within this package may be generated locally by running 's <- pkgstats::pkgstats(<path/to/repo>)', and examining the 'external_calls' table.
base
list (55), data.frame (41), if (25), c (24), return (20), tryCatch (16), rep (15), is.null (11), nrow (9), paste (9), unique (9), mean (8), cut (6), names (6), paste0 (6), vapply (6), length (5), round (5), which.min (5), floor (4), for (4), lapply (4), as.data.frame (3), drop (3), is.na (3), is.numeric (3), logical (3), matrix (3), sort (3), sum (3), switch (3), character (2), do.call (2), factor (2), is.finite (2), max (2), summary (2), table (2), which (2), all (1), apply (1), exp (1), grepl (1), ifelse (1), levels (1), min (1), ncol (1), print (1), range (1), rbind (1), replace (1), row.names (1), sample (1), seq (1), setdiff (1), subset (1)
stats
time (15), sd (10), as.formula (9), median (8), df (6), pchisq (5), quantile (4), aggregate (2), complete.cases (1), na.omit (1), relevel (1)
utils
data (32), packageVersion (1)
ggplot2
aes (6), geom_line (4), ggplot (4), theme_minimal (4), labs (2), element_text (1), facet_wrap (1), geom_density (1), geom_hline (1), scale_x_continuous (1), theme (1)
survival
coxph (7), Surv (3), survdiff (3), survfit (3), cox.zph (1)
cli
cli_abort (2), cli_progress_bar (2), cli_bullets (1), cli_progress_update (1)
graphics
title (5)
foreach
foreach (3)
parallel
detectCores (1), makeCluster (1)
tidyr
everything (1), pivot_longer (1)
doParallel
registerDoParallel (1)
grDevices
palette (1)
rgenoud
genoud (1)
survminer
ggcoxzph (1)
tools
toTitleCase (1)
NOTE: Some imported packages appear to have no associated function calls; please ensure with author that these 'Imports' are listed appropriately.
3. Statistical Properties
This package features some noteworthy statistical properties which may need to be clarified by a handling editor prior to progressing.
Details of statistical properties (click to open)
The package has:
- code in R (100% in 9 files) and
- 1 authors
- 2 vignettes
- 2 internal data files
- 10 imported packages
- 14 exported functions (median 58 lines of code)
- 14 non-exported functions in R (median 37 lines of code)
Statistical properties of package structure as distributional percentiles in relation to all current CRAN packages The following terminology is used:
-
loc= "Lines of Code" -
fn= "function" -
exp/not_exp= exported / not exported
All parameters are explained as tooltips in the locally-rendered HTML version of this report generated by the checks_to_markdown() function
The final measure (fn_call_network_size) is the total number of calls between functions (in R), or more abstract relationships between code objects in other languages. Values are flagged as "noteworthy" when they lie in the upper or lower 5th percentile.
| measure | value | percentile | noteworthy |
|---|---|---|---|
| files_R | 9 | 53.6 | |
| files_vignettes | 2 | 82.6 | |
| files_tests | 3 | 66.6 | |
| loc_R | 2124 | 82.2 | |
| loc_vignettes | 564 | 78.9 | |
| loc_tests | 1888 | 90.9 | |
| num_vignettes | 2 | 85.0 | |
| data_size_total | 631174 | 93.1 | |
| data_size_median | 315587 | 96.0 | TRUE |
| n_fns_r | 28 | 60.5 | |
| n_fns_r_exported | 14 | 56.3 | |
| n_fns_r_not_exported | 14 | 68.7 | |
| n_fns_per_file_r | 5 | 72.2 | |
| num_params_per_fn | 4 | 49.9 | |
| loc_per_fn_r | 52 | 87.7 | |
| loc_per_fn_r_exp | 58 | 82.9 | |
| loc_per_fn_r_not_exp | 37 | 95.3 | TRUE |
| rel_whitespace_R | 9 | 68.2 | |
| rel_whitespace_vignettes | 34 | 92.2 | |
| rel_whitespace_tests | 6 | 85.6 | |
| doclines_per_fn_exp | 104 | 91.6 | |
| doclines_per_fn_not_exp | 18 | 94.7 | |
| fn_call_network_size | 22 | 47.9 |
3a. Network visualisation
Click to see the interactive network visualisation of calls between objects in package
4. goodpractice and other checks
Details of goodpractice checks (click to open)
3a. Continuous Integration Badges
GitHub Workflow Results
| id | name | conclusion | sha | run_number | date |
|---|---|---|---|---|---|
| 19645602996 | pkgcheck | success | 918b7c | 3 | 2025-11-24 |
| 19645602978 | R-CMD-check.yaml | success | 918b7c | 15 | 2025-11-24 |
3b. goodpractice results
R CMD check with rcmdcheck
R CMD check generated the following error:
- Error in proc$get_built_file() : Build process failed
Cyclocomplexity with cyclocomp
Error : Build failed, unknown error, standard output:
- checking for file ‘OptSurvCutR/DESCRIPTION’ ... OK
- preparing ‘OptSurvCutR’:
- checking DESCRIPTION meta-information ... OK
- installing the package to build vignettes ----------------------------------- ERROR: dependency ‘survminer’ is not available for package ‘OptSurvCutR’ Perhaps try a variation of: install.packages('survminer')
- removing ‘/tmp/RtmpBDeAEk/Rinsta0996beded62/OptSurvCutR’ ----------------------------------- ERROR: package installation failed
Static code analyses with lintr
lintr found no issues with this package!
Package Versions
| package | version |
|---|---|
| pkgstats | 0.2.1.14 |
| pkgcheck | 0.1.2.262 |
| srr | 0.1.4.12 |
Editor-in-Chief Instructions:
Processing may not proceed until the items marked with :heavy_multiplication_x: have been resolved.
@ropensci-review-bot check srr