R: Modify Terms Objects

delete.response {stats} | R Documentation

## Modify Terms Objects

### Description

`delete.response` returns a `terms` object for the same model but with no response variable.

`drop.terms` removes variables from the right-hand side of the model. There is also a `"[.terms"` method to perform the same function (with `keep.response = TRUE`).

`reformulate` creates a formula from a character vector. If `length(termlabels) > 1`, its elements are concatenated with `+`. Non-syntactic names (e.g. containing spaces or special characters; see `make.names`) must be protected with backticks (see examples). A non-`parse`able `response` still works for now, back compatibly, with a deprecation warning.

### Usage

    delete.response(termobj)

    reformulate(termlabels, response = NULL, intercept = TRUE, env = parent.frame())

    drop.terms(termobj, dropx = NULL, keep.response = FALSE)

### Arguments

`termobj` | A `terms` object
`termlabels` | character vector giving the right-hand side of a model formula. Cannot be zero-length.
`response` | character string, symbol or call giving the left-hand side of a model formula, or `NULL`.
`intercept` | logical: should the formula have an intercept?
`env` | the `environment` of the `formula` returned.
`dropx` | vector of positions of variables to drop from the right-hand side of the model.
`keep.response` | Keep the response in the resulting object?

### Value

`delete.response` and `drop.terms` return a `terms` object.

`reformulate` returns a `formula`.

### See Also

`terms`

### Examples

    ff <- y ~ z + x + w
    tt <- terms(ff)
    tt
    delete.response(tt)
    drop.terms(tt, 2:3, keep.response = TRUE)
    tt[-1]
    tt[2:3]
    reformulate(attr(tt, "term.labels"))

    ## keep LHS :
    reformulate("x*w", ff[[2]])
    fS <- surv(ft, case) ~ a + b
    reformulate(c("a", "b*f"), fS[[2]])

    ## using non-syntactic names:
    reformulate(c("`P/E`", "`% Growth`"), response = as.name("+-"))

    x <- c("a name", "another name")
    try( reformulate(x) ) # -> Error ..... unexpected symbol
    ## rather backquote the strings in x :
    reformulate(sprintf("`%s`", x))

    stopifnot(identical(      ~ var, reformulate("var")),
              identical(~ a + b + c, reformulate(letters[1:3])),
              identical(  y ~ a + b, reformulate(letters[1:2], "y"))
             )

[Package stats version 4.0.5 Index]