Skip to content

[BUG] bootstrap_df and shuffle_df fail if node_col is a factor #19

@maouw

Description

@maouw

Describe the bug
bootstrap_df and shuffle_df fail if the node_col parameter refers to a column that is of type factor. This happens because of the following lines are trying to turn a character into factor:

  for (var in original_colnames) {
    class(df_bootstrap[[var]]) <- class(df[[var]])
  }

To Reproduce

devtools::load_all()
#> ℹ Loading tractable
readr::read_csv("tests/testthat/afq_12_rows.csv", show_col_types = FALSE) |>
  dplyr::mutate(nodeID = as.factor(nodeID)) |>
  bootstrap_df(target = "dti_fa", node_col = "nodeID") |>
  pillar::glimpse(width = 1)
#> Error in class(df_bootstrap[[var]]) <- class(df[[var]]): adding class "factor" to an invalid object
devtools::load_all()
#> ℹ Loading tractable
readr::read_csv("tests/testthat/afq_12_rows.csv", show_col_types = FALSE) |>
  dplyr::mutate(nodeID = as.factor(nodeID)) |>
  shuffle_df(target = "dti_fa", node_col = "nodeID") |>
  pillar::glimpse(width = 1)
#> Error in class(df_shuffled[[var]]) <- class(df[[var]]): adding class "factor" to an invalid object

Expected behavior
The functions should succeed as below:

devtools::load_all()
#> ℹ Loading tractable
readr::read_csv("tests/testthat/afq_12_rows.csv", show_col_types = FALSE) |>
  bootstrap_df(target = "dti_fa", node_col = "nodeID") |>
  pillar::glimpse(width = 1)
#> Rows: 12
#> Columns: 6
#> $ subjectID <dbl> …
#> $ nodeID    <dbl> …
#> $ dti_fa    <dbl> …
#> $ age       <dbl> …
#> $ sex       <dbl> …
#> $ group     <dbl> …

Desktop (please complete the following information):

sessioninfo::session_info()
#> ─ Session info ───────────────────────────────────────────────────────────────
#>  setting  value
#>  version  R version 4.4.2 (2024-10-31)
#>  os       macOS Sonoma 14.7.2
#>  system   aarch64, darwin20
#>  ui       X11
#>  language (EN)
#>  collate  en_US.UTF-8
#>  ctype    en_US.UTF-8
#>  tz       America/Los_Angeles
#>  date     2025-01-28
#>  pandoc   3.2 @ /Applications/RStudio.app/Contents/Resources/app/quarto/bin/tools/aarch64/ (via rmarkdown)
#> 
#> ─ Packages ───────────────────────────────────────────────────────────────────
#>  ! package       * version date (UTC) lib source
#>    aws.s3          0.3.21  2020-04-07 [1] CRAN (R 4.4.0)
#>    aws.signature   0.6.0   2020-06-01 [1] CRAN (R 4.4.0)
#>    base64enc       0.1-3   2015-07-28 [1] CRAN (R 4.4.0)
#>    bit             4.5.0.1 2024-12-03 [1] CRAN (R 4.4.1)
#>    bit64           4.6.0-1 2025-01-16 [1] CRAN (R 4.4.1)
#>    brio            1.1.5   2024-04-24 [1] CRAN (R 4.4.0)
#>    cachem          1.1.0   2024-05-16 [1] CRAN (R 4.4.0)
#>    cli             3.6.3   2024-06-21 [1] CRAN (R 4.4.0)
#>    colorspace      2.1-1   2024-07-26 [1] CRAN (R 4.4.0)
#>    crayon          1.5.3   2024-06-20 [1] CRAN (R 4.4.0)
#>    curl            6.1.0   2025-01-06 [1] CRAN (R 4.4.1)
#>    desc            1.4.3   2023-12-10 [1] CRAN (R 4.4.0)
#>    devtools        2.4.5   2022-10-11 [1] CRAN (R 4.4.0)
#>    digest          0.6.37  2024-08-19 [1] CRAN (R 4.4.1)
#>    dplyr           1.1.4   2023-11-17 [1] CRAN (R 4.4.0)
#>    ellipsis        0.3.2   2021-04-29 [1] CRAN (R 4.4.0)
#>    evaluate        1.0.3   2025-01-10 [1] CRAN (R 4.4.1)
#>    farver          2.1.2   2024-05-13 [1] CRAN (R 4.4.0)
#>    fastmap         1.2.0   2024-05-15 [1] CRAN (R 4.4.0)
#>    fitdistrplus    1.2-2   2025-01-07 [1] CRAN (R 4.4.1)
#>    forcats         1.0.0   2023-01-29 [1] CRAN (R 4.4.0)
#>    fs              1.6.5   2024-10-30 [1] CRAN (R 4.4.1)
#>    generics        0.1.3   2022-07-05 [1] CRAN (R 4.4.0)
#>    ggokabeito      0.1.0   2021-10-18 [1] CRAN (R 4.4.0)
#>    ggplot2         3.5.1   2024-04-23 [1] CRAN (R 4.4.0)
#>    glue            1.8.0   2024-09-30 [1] CRAN (R 4.4.1)
#>    gratia          0.10.0  2024-12-19 [1] CRAN (R 4.4.1)
#>    gtable          0.3.6   2024-10-25 [1] CRAN (R 4.4.1)
#>    hms             1.1.3   2023-03-21 [1] CRAN (R 4.4.0)
#>    htmltools       0.5.8.1 2024-04-04 [1] CRAN (R 4.4.0)
#>    htmlwidgets     1.6.4   2023-12-06 [1] CRAN (R 4.4.0)
#>    httpuv          1.6.15  2024-03-26 [1] CRAN (R 4.4.0)
#>    httr            1.4.7   2023-08-15 [1] CRAN (R 4.4.0)
#>    itsadug         2.4.1   2022-06-17 [1] CRAN (R 4.4.0)
#>    knitr           1.49    2024-11-08 [1] CRAN (R 4.4.1)
#>    later           1.4.1   2024-11-27 [1] CRAN (R 4.4.1)
#>    lattice         0.22-6  2024-03-20 [2] CRAN (R 4.4.2)
#>    lifecycle       1.0.4   2023-11-07 [1] CRAN (R 4.4.0)
#>    magrittr        2.0.3   2022-03-30 [1] CRAN (R 4.4.0)
#>    MASS            7.3-64  2025-01-04 [1] CRAN (R 4.4.1)
#>    Matrix          1.7-1   2024-10-18 [2] CRAN (R 4.4.1)
#>    memoise         2.0.1   2021-11-26 [1] CRAN (R 4.4.0)
#>    mgcv            1.9-1   2023-12-21 [2] CRAN (R 4.4.2)
#>    mime            0.12    2021-09-28 [1] CRAN (R 4.4.0)
#>    miniUI          0.1.1.1 2018-05-18 [1] CRAN (R 4.4.0)
#>    munsell         0.5.1   2024-04-01 [1] CRAN (R 4.4.0)
#>    mvnfast         0.2.8   2023-02-23 [1] CRAN (R 4.4.0)
#>    nlme            3.1-166 2024-08-14 [2] CRAN (R 4.4.2)
#>    patchwork       1.3.0   2024-09-16 [1] CRAN (R 4.4.1)
#>    pillar          1.10.1  2025-01-07 [1] CRAN (R 4.4.1)
#>    pkgbuild        1.4.6   2025-01-16 [1] CRAN (R 4.4.1)
#>    pkgconfig       2.0.3   2019-09-22 [1] CRAN (R 4.4.0)
#>    pkgload         1.4.0   2024-06-28 [1] CRAN (R 4.4.0)
#>    plotfunctions   1.4     2020-04-28 [1] CRAN (R 4.4.0)
#>    profvis         0.4.0   2024-09-20 [1] CRAN (R 4.4.1)
#>    promises        1.3.2   2024-11-28 [1] CRAN (R 4.4.1)
#>    purrr           1.0.2   2023-08-10 [1] CRAN (R 4.4.0)
#>    R.cache         0.16.0  2022-07-21 [1] CRAN (R 4.4.0)
#>    R.methodsS3     1.8.2   2022-06-13 [1] CRAN (R 4.4.0)
#>    R.oo            1.27.0  2024-11-01 [1] CRAN (R 4.4.1)
#>    R.utils         2.12.3  2023-11-18 [1] CRAN (R 4.4.0)
#>    R6              2.5.1   2021-08-19 [1] CRAN (R 4.4.0)
#>    RColorBrewer    1.1-3   2022-04-03 [1] CRAN (R 4.4.0)
#>    Rcpp            1.0.14  2025-01-12 [1] CRAN (R 4.4.1)
#>    readr           2.1.5   2024-01-10 [1] CRAN (R 4.4.0)
#>    remotes         2.5.0   2024-03-17 [1] CRAN (R 4.4.0)
#>    reprex          2.1.1   2024-07-06 [1] CRAN (R 4.4.0)
#>    rlang           1.1.4   2024-06-04 [1] CRAN (R 4.4.0)
#>    rmarkdown       2.29    2024-11-04 [1] CRAN (R 4.4.1)
#>    rprojroot       2.0.4   2023-11-05 [1] CRAN (R 4.4.0)
#>    rstudioapi      0.17.1  2024-10-22 [1] CRAN (R 4.4.1)
#>    scales          1.3.0   2023-11-28 [1] CRAN (R 4.4.0)
#>    sessioninfo     1.2.2   2021-12-06 [1] CRAN (R 4.4.0)
#>    shiny           1.10.0  2024-12-14 [1] CRAN (R 4.4.1)
#>    stringi         1.8.4   2024-05-06 [1] CRAN (R 4.4.0)
#>    stringr         1.5.1   2023-11-14 [1] CRAN (R 4.4.0)
#>    styler          1.10.3  2024-04-07 [1] CRAN (R 4.4.0)
#>    survival        3.8-3   2024-12-17 [1] CRAN (R 4.4.1)
#>    testthat      * 3.2.3   2025-01-13 [1] CRAN (R 4.4.1)
#>    tibble          3.2.1   2023-03-20 [1] CRAN (R 4.4.0)
#>    tidyr           1.3.1   2024-01-24 [1] CRAN (R 4.4.0)
#>    tidyselect      1.2.1   2024-03-11 [1] CRAN (R 4.4.0)
#>  R tractable     * 0.2.1   <NA>       [?] <NA>
#>    tzdb            0.4.0   2023-05-12 [1] CRAN (R 4.4.0)
#>    urlchecker      1.0.1   2021-11-30 [1] CRAN (R 4.4.0)
#>    usethis         3.1.0   2024-11-26 [1] CRAN (R 4.4.1)
#>    vctrs           0.6.5   2023-12-01 [1] CRAN (R 4.4.0)
#>    vroom           1.6.5   2023-12-05 [1] CRAN (R 4.4.0)
#>    withr           3.0.2   2024-10-28 [1] CRAN (R 4.4.1)
#>    xfun            0.50    2025-01-07 [1] CRAN (R 4.4.1)
#>    xml2            1.3.6   2023-12-04 [1] CRAN (R 4.4.0)
#>    xtable          1.8-4   2019-04-21 [1] CRAN (R 4.4.0)
#>    yaml            2.3.10  2024-07-26 [1] CRAN (R 4.4.0)
#> 
#>  [1] /Users/altan/Library/R/arm64/4.4/library
#>  [2] /Library/Frameworks/R.framework/Versions/4.4-arm64/Resources/library
#> 
#>  R ── Package was removed from disk.
#> 
#> ──────────────────────────────────────────────────────────────────────────────

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions