/R/longer_wider.R

https://github.com/elbersb/tidylog · R · 41 lines · 28 code · 9 blank · 4 comment · 1 complexity · 396365a13ca639d1a0c186e267ea11fe MD5 · raw file

  1. #' @export
  2. pivot_longer <- function(data, ...) {
  3. log_longer_wider(data, .fun = tidyr::pivot_longer, .funname = "pivot_longer", ...)
  4. }
  5. #' @export
  6. pivot_wider <- function(data, ...) {
  7. log_longer_wider(data, .fun = tidyr::pivot_wider, .funname = "pivot_wider", ...)
  8. }
  9. #' @export
  10. gather <- function(data, ...) {
  11. log_longer_wider(data, .fun = tidyr::gather, .funname = "gather", ...)
  12. }
  13. #' @export
  14. spread <- function(data, ...) {
  15. log_longer_wider(data, .fun = tidyr::spread, .funname = "spread", ...)
  16. }
  17. log_longer_wider <- function(.data, .fun, .funname, ...) {
  18. newdata <- .fun(.data, ...)
  19. if (!"data.frame" %in% class(.data) | !should_display()) {
  20. return(newdata)
  21. }
  22. newcols <- setdiff(names(newdata), names(.data))
  23. oldcols <- setdiff(names(.data), names(newdata))
  24. display(glue::glue(
  25. "{.funname}: ",
  26. "reorganized ({format_list(oldcols)}) ",
  27. "into ({format_list(newcols)}) ",
  28. "[was {nrow(.data)}x{ncol(.data)}, ",
  29. "now {nrow(newdata)}x{ncol(newdata)}]"
  30. ))
  31. newdata
  32. }