diff --git a/R/fct_drop.R b/R/fct_drop.R new file mode 100644 index 0000000..2f84e0d --- /dev/null +++ b/R/fct_drop.R @@ -0,0 +1,29 @@ +#' Drop unused levels preserving label data +#' +#' This extends [forcats::fct_drop()] to natively work across a data.frame and +#' replace [base::droplevels()]. +#' +#' @param x Factor to drop unused levels +#' @param ... Other arguments passed down to method. +#' @export +#' +#' @importFrom forcats fct_drop +#' @export +#' @name fct_drop +NULL + +#' @rdname fct_drop +#' @export +fct_drop.data.frame <- function(x, ...) { + purrr::map(\(.x){ + if (is.factor(.x)){ + forcats::fct_drop(.x) + } else { + .x + } + }) |> + dplyr::bind_cols() +} + + +