Skip to content

Error in call2 when using local fit function and omitting pkg #1229

Closed
@chillerb

Description

@chillerb

The problem

According to the parsnip tutorial, pkg is not required to use a local function for fitting:

func is the package and name of the function that will be called. If you are using a locally defined function, only fun is required.

However, if I try to register a model with a local fit function, I receive an error in call2, that namespace ns should be a string.
I am quite new to tidymodels, am I missing something?

Reproducible example

library(tidymodels)

set_new_model("my_model")

set_model_mode(model = "my_model", mode = "regression")

set_model_engine(
  "my_model", 
  mode = "regression", 
  eng = "my_engine"
)

my_model <-
  function(mode = "regression") {
    # Check for correct mode
    if (mode  != "regression") {
      rlang::abort("`mode` should be 'regression'.")
    }
    
    # Save some empty slots for future parts of the specification
    new_model_spec(
      "my_model",
      args = list(),
      eng_args = NULL,
      mode = mode,
      method = NULL,
      engine = NULL
    )
  }

my_model_fun <- function(...) {
  print(list(...))
}

set_fit(
  model = "my_model",
  eng = "my_engine",
  mode = "regression",
  value = list(
    interface = "matrix",
    # should not be changeable by the user
    protect = c("formula", "data"),
    func = c(fun = "my_model_fun"),
    defaults = list()
  )
)

my_model() %>%
  translate("my_engine")
#> my model Model Specification (regression)
#> 
#> Computational engine: my_engine 
#> 
#> Model fit template:
#> Error in `call2()` at parsnip/R/misc.R:245:3:
#> ! `ns` must be a string

Created on 2025-01-16 with reprex v2.1.1

Session info

sessioninfo::session_info()
#> ─ Session info ───────────────────────────────────────────────────────────────
#>  setting  value
#>  version  R version 4.4.1 (2024-06-14)
#>  os       Ubuntu 22.04.5 LTS
#>  system   x86_64, linux-gnu
#>  ui       X11
#>  language (EN)
#>  collate  en_US.UTF-8
#>  ctype    en_US.UTF-8
#>  tz       Etc/UTC
#>  date     2025-01-16
#>  pandoc   3.4 @ /usr/bin/ (via rmarkdown)
#> 
#> ─ Packages ───────────────────────────────────────────────────────────────────
#>  ! package      * version    date (UTC) lib source
#>    backports      1.5.0      2024-05-23 [1] CRAN (R 4.4.1)
#>  P broom        * 1.0.7      2024-09-26 [?] CRAN (R 4.4.1)
#>  P class          7.3-22     2023-05-03 [3] CRAN (R 4.4.1)
#>  P cli            3.6.3      2024-06-21 [?] CRAN (R 4.4.1)
#>  P codetools      0.2-20     2024-03-31 [3] CRAN (R 4.4.1)
#>    colorspace     2.1-1      2024-07-26 [1] CRAN (R 4.4.1)
#>    data.table     1.16.0     2024-08-27 [1] CRAN (R 4.4.1)
#>  P dials        * 1.3.0      2024-07-30 [?] CRAN (R 4.4.1)
#>  P DiceDesign     1.10       2023-12-07 [?] CRAN (R 4.4.1)
#>  P digest         0.6.37     2024-08-19 [?] CRAN (R 4.4.1)
#>  P dplyr        * 1.1.4      2023-11-17 [?] CRAN (R 4.4.1)
#>  P evaluate       1.0.0      2024-09-17 [?] CRAN (R 4.4.1)
#>  P fansi          1.0.6      2023-12-08 [?] CRAN (R 4.4.1)
#>  P fastmap        1.2.0      2024-05-15 [?] CRAN (R 4.4.1)
#>    foreach        1.5.2      2022-02-02 [1] CRAN (R 4.4.1)
#>  P fs             1.6.4      2024-04-25 [?] CRAN (R 4.4.1)
#>  P furrr          0.3.1      2022-08-15 [?] CRAN (R 4.4.1)
#>  P future         1.34.0     2024-07-29 [?] CRAN (R 4.4.1)
#>  P future.apply   1.11.3     2024-10-27 [?] CRAN (R 4.4.1)
#>  P generics       0.1.3      2022-07-05 [?] CRAN (R 4.4.1)
#>    ggplot2      * 3.5.1      2024-04-23 [1] CRAN (R 4.4.1)
#>  P globals        0.16.3     2024-03-08 [?] CRAN (R 4.4.1)
#>  P glue           1.7.0      2024-01-09 [?] CRAN (R 4.4.1)
#>  P gower          1.0.1      2022-12-22 [?] CRAN (R 4.4.1)
#>  P GPfit          1.0-8      2019-02-08 [?] CRAN (R 4.4.1)
#>    gtable         0.3.5      2024-04-22 [1] CRAN (R 4.4.1)
#>  P hardhat        1.4.0      2024-06-02 [?] CRAN (R 4.4.1)
#>  P htmltools      0.5.8.1    2024-04-04 [?] CRAN (R 4.4.1)
#>  P infer        * 1.0.7      2024-03-25 [?] CRAN (R 4.4.1)
#>  P ipred          0.9-15     2024-07-18 [?] CRAN (R 4.4.1)
#>    iterators      1.0.14     2022-02-05 [1] CRAN (R 4.4.1)
#>  P knitr          1.49       2024-11-08 [?] CRAN (R 4.4.1)
#>  P lattice        0.22-6     2024-03-20 [3] CRAN (R 4.4.1)
#>  P lava           1.8.0      2024-03-05 [?] CRAN (R 4.4.1)
#>  P lhs            1.2.0      2024-06-30 [?] CRAN (R 4.4.1)
#>  P lifecycle      1.0.4      2023-11-07 [?] CRAN (R 4.4.1)
#>  P listenv        0.9.1      2024-01-29 [?] CRAN (R 4.4.1)
#>  P lubridate      1.9.4      2024-12-08 [?] CRAN (R 4.4.1)
#>  P magrittr       2.0.3      2022-03-30 [?] CRAN (R 4.4.1)
#>  P MASS           7.3-60.2   2024-04-26 [3] CRAN (R 4.4.1)
#>  P Matrix         1.7-0      2024-04-26 [3] CRAN (R 4.4.1)
#>  P modeldata    * 1.4.0      2024-06-19 [?] CRAN (R 4.4.1)
#>    munsell        0.5.1      2024-04-01 [1] CRAN (R 4.4.1)
#>  P nnet           7.3-19     2023-05-03 [3] CRAN (R 4.4.1)
#>  P parallelly     1.40.0     2024-12-03 [?] CRAN (R 4.4.1)
#>  P parsnip      * 1.2.1      2024-03-22 [?] CRAN (R 4.4.1)
#>  P pillar         1.9.0      2023-03-22 [?] CRAN (R 4.4.1)
#>  P pkgconfig      2.0.3      2019-09-22 [?] CRAN (R 4.4.1)
#>  P prodlim        2024.06.25 2024-06-24 [?] CRAN (R 4.4.1)
#>  P purrr        * 1.0.2      2023-08-10 [?] CRAN (R 4.4.1)
#>  P R6             2.5.1      2021-08-19 [?] CRAN (R 4.4.1)
#>  P Rcpp           1.0.13     2024-07-17 [?] CRAN (R 4.4.1)
#>  P recipes      * 1.1.0      2024-07-04 [?] CRAN (R 4.4.1)
#>  P reprex         2.1.1      2024-07-06 [?] CRAN (R 4.4.1)
#>  P rlang          1.1.4      2024-06-04 [?] CRAN (R 4.4.1)
#>  P rmarkdown      2.29       2024-11-04 [?] CRAN (R 4.4.1)
#>  P rpart          4.1.23     2023-12-05 [3] CRAN (R 4.4.1)
#>  P rsample      * 1.2.1      2024-03-25 [?] CRAN (R 4.4.1)
#>  P rstudioapi     0.16.0     2024-03-24 [?] CRAN (R 4.4.1)
#>  P scales       * 1.3.0      2023-11-28 [?] CRAN (R 4.4.1)
#>  P sessioninfo    1.2.2      2021-12-06 [?] CRAN (R 4.4.1)
#>  P survival       3.6-4      2024-04-24 [3] CRAN (R 4.4.1)
#>  P tibble       * 3.2.1      2023-03-20 [?] CRAN (R 4.4.1)
#>  P tidymodels   * 1.2.0      2024-03-25 [?] CRAN (R 4.4.1)
#>  P tidyr        * 1.3.1      2024-01-24 [?] CRAN (R 4.4.1)
#>  P tidyselect     1.2.1      2024-03-11 [?] CRAN (R 4.4.1)
#>  P timechange     0.3.0      2024-01-18 [?] CRAN (R 4.4.1)
#>  P timeDate       4041.110   2024-09-22 [?] CRAN (R 4.4.1)
#>  P tune         * 1.2.1      2024-04-18 [?] CRAN (R 4.4.1)
#>  P utf8           1.2.4      2023-10-22 [?] CRAN (R 4.4.1)
#>  P vctrs          0.6.5      2023-12-01 [?] CRAN (R 4.4.1)
#>  P withr          3.0.1      2024-07-31 [?] CRAN (R 4.4.1)
#>  P workflows    * 1.1.4      2024-02-19 [?] CRAN (R 4.4.1)
#>  P workflowsets * 1.1.0      2024-03-21 [?] CRAN (R 4.4.1)
#>  P xfun           0.49       2024-10-31 [?] CRAN (R 4.4.1)
#>  P yaml           2.3.10     2024-07-26 [?] CRAN (R 4.4.1)
#>  P yardstick    * 1.3.1      2024-03-21 [?] CRAN (R 4.4.1)
#> 
#>  [1] /root/.cache/R/renv/library/rabaki-e6dba559/linux-ubuntu-jammy/R-4.4/x86_64-pc-linux-gnu
#>  [2] /root/.cache/R/renv/sandbox/linux-ubuntu-jammy/R-4.4/x86_64-pc-linux-gnu/25ebdc09
#>  [3] /usr/local/lib/R/library
#> 
#>  P ── Loaded and on-disk path mismatch.
#> 
#> ──────────────────────────────────────────────────────────────────────────────

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugan unexpected problem or unintended behavior

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions