R/fct_drop.R

Defines functions fct_drop.factor fct_drop.data.frame fct_drop

Documented in fct_drop fct_drop.data.frame fct_drop.factor

#' Drop unused levels preserving label data
#'
#' This extends [forcats::fct_drop()] to natively work across a data.frame and
#' replaces [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
fct_drop <- function(x, ...) {
  UseMethod("fct_drop")
}

#' @rdname fct_drop
#' @export
#'
#' @examples
#' mtcars |>
#'   numchar2fct() |>
#'   fct_drop()
fct_drop.data.frame <- function(x, ...) {
  purrr::map(x, \(.x){
    if (is.factor(.x)) {
      forcats::fct_drop(.x)
    } else {
      .x
    }
  }) |>
    dplyr::bind_cols()
}


#' @rdname fct_drop
#' @export
#'
#' @examples
#' mtcars |>
#'   numchar2fct() |>
#'   dplyr::mutate(vs = fct_drop(vs))
fct_drop.factor <- function(x, ...) {
  forcats::fct_drop(f = x, ...)
}

Try the REDCapCAST package in your browser

Any scripts or data that you put into this service are public.

REDCapCAST documentation built on April 4, 2025, 3:18 a.m.