R: Manipulate the component parts of formulas, expressions,...

formula.parts {formula.tools} | R Documentation

## Manipulate the component parts of formulas, expressions, calls, name/symbols and list and vectors of such objects.

### Description

`lhs, rhs, op, and op.type` retrieve the various parts of R formulas, calls, expressions, names/symbols. These functions were designed to greatly facilitate symbolic manupulation using native R objects. Also provided are methods to handle list of these objects.

### Usage

    lhs(x, ...)

    ## S4 method for signature 'call'
    lhs(x)

    ## S4 method for signature 'formula'
    lhs(x)

    ## S4 method for signature 'expression'
    lhs(x, ...)

    ## S4 method for signature 'list'
    lhs(x, ...)

    lhs(x) <- value

    ## S4 replacement method for signature 'call'
    lhs(x) <- value

    ## S4 replacement method for signature 'formula'
    lhs(x) <- value

    .replace.lhs.plural(x, value)

    ## S4 replacement method for signature 'expression'
    lhs(x) <- value

    ## S4 replacement method for signature 'list'
    lhs(x) <- value

    op(x)

    ## S4 method for signature 'formula'
    op(x)

    ## S4 method for signature 'call'
    op(x)

    ## S4 method for signature 'name'
    op(x)

    ## S4 method for signature 'expression'
    op(x)

    ## S4 method for signature 'list'
    op(x)

    op(x) <- value

    ## S4 replacement method for signature 'call'
    op(x) <- value

    ## S4 replacement method for signature 'formula'
    op(x) <- value

    .replace.op.plural(x, value)

    ## S4 replacement method for signature 'expression'
    op(x) <- value

    ## S4 replacement method for signature 'list'
    op(x) <- value

    rhs(x, ...)

    .rhs.singular(x)

    ## S4 method for signature 'call'
    rhs(x)

    ## S4 method for signature 'formula'
    rhs(x)

    ## S4 method for signature 'expression'
    rhs(x, ...)

    ## S4 method for signature 'list'
    rhs(x, ...)

    rhs(x) <- value

    .replace.rhs.singular(x, value)

    ## S4 replacement method for signature 'call'
    rhs(x) <- value

    ## S4 replacement method for signature 'formula'
    rhs(x) <- value

    .replace.rhs.plural(x, value)

    ## S4 replacement method for signature 'expression'
    rhs(x) <- value

    ## S4 replacement method for signature 'list'
    rhs(x) <- value

### Arguments

`x` | object from where to get/set the lhs/rhs
`...` | arguments passed to additional methods
`value` | the value to set for the lhs/rhs

### Details

`lhs` retrieves the left-hand side `rhs` retrieves the right-hand side `op` retrieves the operation `op.type` returns the type operator

There are also functions `lhs.vars` and `rhs.vars`. Like `all.vars` , these functions interpret the variables on the left-hand and right-hand sides respectively.

These are simple functions for extracting the left-hand side, right-hand side, operator and operator type from formulas, expressions, calls, names/symbols and list containing these objects. lhs, rhs are only defined for formulas and calls ( and list and expressions ) that are defined with either one of the relational or tilde ('~') operators. If the object does not contain one of these operators, it will fail with a warning.

The defined operator types are defined by the operator.tools package: See `operators` and `setOperator`

The `lhs.vars` and `rhs.vars` methods, return the variables used on the lhs and rhs, respectively. If special formula variables are used, such as '.', a data.frame or environment must also be provided such that the variable list may be properly infered.

### Value

Value depends on the argument.

### Note

Methods for the non-standard "`<-`" class exist and are not included in the usage documentation because CRAN does not support S4 documentation for this class.

### Author(s)

Christopher Brown

### See Also

terms, all.vars, all.names, `operators`

### Examples

      # FORMULA
      f <- A + B ~ C + D
      lhs(f)
      lhs(f) <- quote( E / F )

      rhs(f)
      rhs(f) <- quote( G + H )
      op(f)
      op(rhs(f))
      op( quote(A) )  # NULL:
      op.type(f)

      # ONE-SIDED FORMULA
      f <- ~ A   #
      lhs(f)     # NULL
      rhs(f)     # A

      # EXPRESSION
      e <- expression( A + B == C + D )
      lhs(e)
      rhs(e)
      op(e)
      op.type(e)

      # CALL
      c <- quote( A + B > C + D )
      lhs(c)
      lhs(c) <- quote(E)
      rhs(c)

      op(c)
      op.type(c)

      # ASSIGNMENT
      a  <- quote( A <- B )
      lhs(a)
      rhs(a)
      op(a)
      op.type(a)

[Package formula.tools version 1.7.1 Index]