Skip to content

Opaque error from parameters() with new_*_param(..., label = NULL) #349

Closed
@owenjonesuob

Description

@owenjonesuob

We can specify a new parameter with new_quant_param() or new_qual_param().

The docs state that label is an optional parameter:

dials/R/constructors.R

Lines 34 to 36 in 210055f

#' @param label An optional named character string that can be used for
#' printing and plotting. The name should match the object name (e.g.
#' `"mtry"`, `"neighbors"`, etc.)

But if no label is specified, we get an opaque error when handing our new parameter to parameters():

library(dials)
#> Loading required package: scales

with_label <- function() new_quant_param(
  values = 1,
  label = c("with_label" = "Here is a label")
)


sans_label <- function() new_quant_param(
  values = 1
)


parameters(with_label())
#> Collection of 1 parameters for tuning
#> 
#>  identifier       type    object
#>  with_label with_label nparam[+]

parameters(sans_label())
#> Error in `purrr::map_chr()`:
#> ℹ In index: 1.
#> Caused by error:
#> ! Result must be length 1, not 0.

Created on 2024-09-02 with reprex v2.1.1

Session info
sessioninfo::session_info()
#> ─ Session info ───────────────────────────────────────────────────────────────
#>  setting  value
#>  version  R version 4.3.2 (2023-10-31)
#>  os       Amazon Linux 2023.5.20240708
#>  system   x86_64, linux-gnu
#>  ui       X11
#>  language (EN)
#>  collate  C.UTF-8
#>  ctype    C.UTF-8
#>  tz       Europe/London
#>  date     2024-09-02
#>  pandoc   3.1.11 @ /usr/lib/rstudio-server/bin/quarto/bin/tools/x86_64/ (via rmarkdown)
#> 
#> ─ Packages ───────────────────────────────────────────────────────────────────
#>  package     * version date (UTC) lib source
#>  cli           3.6.3   2024-06-21 [1] CRAN (R 4.3.2)
#>  colorspace    2.1-1   2024-07-26 [2] CRAN (R 4.3.2)
#>  dials       * 1.3.0   2024-07-30 [2] CRAN (R 4.3.2)
#>  DiceDesign    1.10    2023-12-07 [2] CRAN (R 4.3.2)
#>  digest        0.6.36  2024-06-23 [2] CRAN (R 4.3.2)
#>  dplyr         1.1.4   2023-11-17 [2] CRAN (R 4.3.2)
#>  evaluate      0.24.0  2024-06-10 [2] CRAN (R 4.3.2)
#>  fansi         1.0.6   2023-12-08 [2] CRAN (R 4.3.2)
#>  fastmap       1.2.0   2024-05-15 [2] CRAN (R 4.3.2)
#>  fs            1.6.4   2024-04-25 [2] CRAN (R 4.3.2)
#>  generics      0.1.3   2022-07-05 [2] CRAN (R 4.3.2)
#>  glue          1.7.0   2024-01-09 [2] CRAN (R 4.3.2)
#>  hardhat       1.4.0   2024-06-02 [2] CRAN (R 4.3.2)
#>  htmltools     0.5.8.1 2024-04-04 [2] CRAN (R 4.3.2)
#>  knitr         1.48    2024-07-07 [2] CRAN (R 4.3.2)
#>  lifecycle     1.0.4   2023-11-07 [2] CRAN (R 4.3.2)
#>  magrittr      2.0.3   2022-03-30 [2] CRAN (R 4.3.2)
#>  munsell       0.5.1   2024-04-01 [2] CRAN (R 4.3.2)
#>  pillar        1.9.0   2023-03-22 [2] CRAN (R 4.3.2)
#>  pkgconfig     2.0.3   2019-09-22 [2] CRAN (R 4.3.2)
#>  purrr         1.0.2   2023-08-10 [2] CRAN (R 4.3.2)
#>  R6            2.5.1   2021-08-19 [2] CRAN (R 4.3.2)
#>  reprex        2.1.1   2024-07-06 [2] CRAN (R 4.3.2)
#>  rlang         1.1.4   2024-06-04 [2] CRAN (R 4.3.2)
#>  rmarkdown     2.27    2024-05-17 [2] CRAN (R 4.3.2)
#>  rstudioapi    0.16.0  2024-03-24 [2] CRAN (R 4.3.2)
#>  scales      * 1.3.0   2023-11-28 [2] CRAN (R 4.3.2)
#>  sessioninfo   1.2.2   2021-12-06 [2] CRAN (R 4.3.2)
#>  tibble        3.2.1   2023-03-20 [2] CRAN (R 4.3.2)
#>  tidyselect    1.2.1   2024-03-11 [2] CRAN (R 4.3.2)
#>  utf8          1.2.4   2023-10-22 [2] CRAN (R 4.3.2)
#>  vctrs         0.6.5   2023-12-01 [2] CRAN (R 4.3.2)
#>  withr         3.0.1   2024-07-31 [2] CRAN (R 4.3.2)
#>  xfun          0.46    2024-07-18 [2] CRAN (R 4.3.2)
#>  yaml          2.3.10  2024-07-26 [2] CRAN (R 4.3.2)
#> 
#>  [1] /home/owen10004/efs/R/x86_64-amazon-linux-gnu-library/4.3
#>  [2] /usr/lib64/R/site-library
#>  [3] /usr/lib64/R/library
#> 
#> ──────────────────────────────────────────────────────────────────────────────

It's because the label is used within parameters() to construct the parameter names:

elem_name <- purrr::map_chr(x, ~ names(.x$label))

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