File: summarizeLevels.R

package info (click to toggle)
r-cran-mlr 2.19.2%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 8,264 kB
  • sloc: ansic: 65; sh: 13; makefile: 5
file content (33 lines) | stat: -rw-r--r-- 953 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#' @title Summarizes factors of a data.frame by tabling them.
#'
#' @description
#' Characters and logicals will be treated as factors.
#'
#' @template arg_taskdf
#' @param cols ([character])\cr
#'   Restrict result to columns in `cols`.
#'   Default is all factor, character and logical columns of `obj`.
#' @return ([list]). Named list of tables.
#' @export
#' @family eda_and_preprocess
#' @examples
#' summarizeLevels(iris)
summarizeLevels = function(obj, cols = NULL) {
  UseMethod("summarizeLevels")
}

#' @export
summarizeLevels.Task = function(obj, cols = NULL) {
  summarizeLevels.data.frame(obj$env$data, cols = cols)
}

#' @export
summarizeLevels.data.frame = function(obj, cols = NULL) {
  pred = function(x) is.factor(x) || is.logical(x) || is.character(x)
  cns = colnames(obj)[vlapply(obj, pred)]
  if (!is.null(cols)) {
    assertSubset(cols, cns)
    cns = intersect(cns, cols)
  }
  lapply(obj[cns], function(x) table(as.factor(x)))
}