diff --git a/R/extract.R b/R/extract.R index 3ed40fa3b..29ca75019 100644 --- a/R/extract.R +++ b/R/extract.R @@ -92,6 +92,17 @@ extract_parameter_set_dials.model_spec <- function(x, ...) { all_args <- generics::tunable(x) tuning_param <- generics::tune_args(x) + if (nrow(all_args) == 0 || nrow(tuning_param) == 0) { + res <- tibble::new_tibble(list( + name = character(0), + id = character(0), + source = character(0), + component = character(0), + call_info = list(), + component_id = character(0), + object = list() + )) + } else { res <- dplyr::inner_join( tuning_param |> dplyr::select(-tunable, -component_id), @@ -100,6 +111,7 @@ extract_parameter_set_dials.model_spec <- function(x, ...) { ) |> mutate(object = purrr::map(call_info, eval_call_info)) + } dials::parameters_constr( res$name, res$id, diff --git a/R/translate.R b/R/translate.R index cb5815c98..a16b1f257 100644 --- a/R/translate.R +++ b/R/translate.R @@ -206,6 +206,14 @@ add_methods <- function(x, engine) { # To translate from given names/ids in grid to parsnip names: params <- object |> hardhat::extract_parameter_set_dials() + if (nrow(params) == 0) { + res <- tibble::new_tibble(list( + user = character(0), + parsnip = character(0), + engine = character(0) + )) + return(res) + } params <- tibble::as_tibble(params) |> dplyr::select(user = id, parsnip = name) # Go from parsnip names to engine names