software-review icon indicating copy to clipboard operation
software-review copied to clipboard

OptSurvCutR: Validated Cut-point Selection for Survival Analysis

Open paytonyau opened this issue 3 months ago • 14 comments

  • 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:

  1. Novel Cut-point Number Selection: OptSurvCutR is the first R package to formalise selecting the number of cut-points as a model selection problem using AICc and BIC, in addition to AIC. This allows users to objectively compare models with 0, 1, 2, or more cut-points. This is a major advancement over tools like CutpointsOEHR, which is limited to AIC and focuses specifically on U or inverse-U shaped relationships with only a fixed, a 2-cut-point consideration.

  2. 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 like maxstat or survminer.

  3. Complete, Validated Workflow: OptSurvCutR is 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).

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

Technical checks

Confirm each of the following by checking the box.

This package:

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.

paytonyau avatar Nov 17 '25 01:11 paytonyau

Thanks for submitting to rOpenSci, our editors and @ropensci-review-bot will reply soon. Type @ropensci-review-bot help for help.

ropensci-review-bot avatar Nov 17 '25 01:11 ropensci-review-bot

:rocket:

Editor check started

:wave:

ropensci-review-bot avatar Nov 17 '25 01:11 ropensci-review-bot

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:

  1. 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:

  1. 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:

  1. no_import_package_as_a_whole
  2. 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_diagnostics from 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.

ropensci-review-bot avatar Nov 17 '25 01:11 ropensci-review-bot

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

paytonyau avatar Nov 20 '25 00:11 paytonyau

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,

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!

mpadge avatar Nov 20 '25 02:11 mpadge

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 avatar Nov 25 '25 10:11 paytonyau

@paytonyau Sorry if i wasn't clear enough, but the bot commands have to be issued separately, as single, self-contained comments.

mpadge avatar Nov 25 '25 22:11 mpadge

@ropensci-review-bot check package, thank. 😊

paytonyau avatar Nov 27 '25 12:11 paytonyau

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 avatar Nov 27 '25 12:11 ropensci-review-bot

@ropensci-review-bot check package

mpadge avatar Dec 01 '25 08:12 mpadge

Thanks, about to send the query.

ropensci-review-bot avatar Dec 01 '25 08:12 ropensci-review-bot

:rocket:

Editor check started

:wave:

ropensci-review-bot avatar Dec 01 '25 08:12 ropensci-review-bot

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

R-CMD-check.yaml

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

ropensci-review-bot avatar Dec 01 '25 09:12 ropensci-review-bot

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:

  1. Copy all text to your local editor
  2. Also copy to a separate location the expected text of our pre-submission template
  3. Copy across all values from Step 1 into template of Step 2, updating where necessary
  4. 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.

mpadge avatar Dec 03 '25 08:12 mpadge

Thanks @mpadge . I have updated the information, and it should be ready to proceed.

paytonyau avatar Jan 07 '26 23:01 paytonyau

@paytonyau The initial comment is still in the format from the full submission template. To repeat the requested steps from there, could you please:

  1. Copy all text to your local editor
  2. Also copy to a separate location the expected text of our pre-submission template
  3. Copy across all values from Step 1 into template of Step 2, updating where necessary
  4. Update the original comment to the structure of the pre-submission template.

mpadge avatar Jan 12 '26 10:01 mpadge

@ropensci-review-bot check package

emilyriederer avatar Feb 07 '26 01:02 emilyriederer

Thanks, about to send the query.

ropensci-review-bot avatar Feb 07 '26 01:02 ropensci-review-bot

: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 avatar Feb 07 '26 01:02 ropensci-review-bot

@ropensci-review-bot check package

emilyriederer avatar Feb 07 '26 01:02 emilyriederer

Thanks, about to send the query.

ropensci-review-bot avatar Feb 07 '26 01:02 ropensci-review-bot

: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 avatar Feb 07 '26 01:02 ropensci-review-bot

Note: The following R packages were unable to be installed/upgraded on our system: [pbkrtest, car, rstatix, ggpubr, survminer]; some checks may be unreliable.

ropensci-review-bot avatar Feb 07 '26 01:02 ropensci-review-bot

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

R-CMD-check.yaml

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:

  1. 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 avatar Feb 07 '26 01:02 ropensci-review-bot

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

R-CMD-check.yaml

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:

  1. 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 avatar Feb 07 '26 01:02 ropensci-review-bot

@ropensci-review-bot check package

emilyriederer avatar Feb 07 '26 02:02 emilyriederer

Thanks, about to send the query.

ropensci-review-bot avatar Feb 07 '26 02:02 ropensci-review-bot

: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 avatar Feb 07 '26 02:02 ropensci-review-bot

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

R-CMD-check.yaml

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:

  1. 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 avatar Feb 07 '26 02:02 ropensci-review-bot

@ropensci-review-bot check srr

emilyriederer avatar Feb 07 '26 02:02 emilyriederer