File: form_pred.R

package info (click to toggle)
r-cran-rsample 0.0.8-1
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 1,696 kB
  • sloc: sh: 13; makefile: 2
file content (42 lines) | stat: -rw-r--r-- 1,140 bytes parent folder | download | duplicates (2)
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
34
35
36
37
38
39
40
41
42
#' Extract Predictor Names from Formula or Terms
#'
#' `all.vars` returns all variables used in a formula. This
#'  function only returns the variables explicitly used on the
#'  right-hand side (i.e., it will not resolve dots unless the
#'  object is terms with a data set specified).
#' @param object A model formula or [stats::terms()]
#'  object.
#' @param ... Arguments to pass to [all.vars()]
#' @return A character vector of names
#' @export
#' @examples
#' form_pred(y ~ x + z)
#' form_pred(terms(y ~ x + z))
#'
#' form_pred(y ~ x + log(z))
#' form_pred(log(y) ~ x + z)
#'
#' form_pred(y1 + y2 ~ x + z)
#' form_pred(log(y1) + y2 ~ x + z)
#'
#' # will fail:
#' # form_pred(y ~ .)
#'
#' form_pred(terms(mpg ~ (.)^2, data = mtcars))
#' form_pred(terms( ~ (.)^2, data = mtcars))
#' @importFrom stats terms

form_pred <- function(object, ...) {
  if(inherits(object, "formula")) {
    object <- terms(object)
  }
  y_index <- attr(object, "response")

  ## If there is something on the lhs of the formula,
  ## remove it and get vars
  if(y_index != 0) {
    object[[2]] <- NULL
    object <- terms(object)
  }
  all.vars(object, ...)
}