extension to forcats::fct_drop to perform across data.frame

This commit is contained in:
Andreas Gammelgaard Damsbo 2024-11-27 09:56:06 +01:00
parent daf0e7852f
commit 9cae725de2
No known key found for this signature in database

29
R/fct_drop.R Normal file
View File

@ -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()
}