Methods {base} | R Documentation

## Internal and Group Methods and Generic Functions

### Description

Many R-internal functions are generic and allow methods to be written for. Group methods in particular are available for the `"Math"`, `"Ops"`, and `"Summary"` group.

### Usage

    Math.data.frame(x, ...)
    Math.factor(x, ...)

    Ops.data.frame(e1, e2 = NULL)
    Ops.factor(e1, e2)
    Ops.ordered(e1, e2)

    Summary.data.frame(x, ...)
    Summary.factor(x, ...)

    .Method
    .Generic
    .Group
    .Class

### Group Dispatching

There are three groups for which methods can be written, namely the `"Math"`, `"Ops"` and `"Summary"` groups.

A function `f` belonging to one of these groups must be `.Internal` or `.Primitive` and will automatically be using `<grp>.<class> (ob)` when `f(<ob>)` is called, `f` belongs to group `<grp>` and `<ob>` is of `class` `<class>`.

1. Group `"Math"`:
   - `abs`, `sign`, `sqrt`,
     `floor`, `ceiling`, `trunc`,
     `round`, `signif`
   - `exp`, `log`,
     `cos`, `sin`, `tan`,
     `acos`, `asin`, `atan`

     `cosh`, `sinh`, `tanh`,
     `acosh`, `asinh`, `atanh`

   - `lgamma`, `gamma`, `gammaCody`,
     `digamma`, `trigamma`, `tetragamma`, `pentagamma`
   - `cumsum`, `cumprod`, `cummax`, `cummin`
2. Group `"Ops"`:
   - `"+"`, `"-"`, `"*"`, `"/"`, `"^"`, `"%%"`, `"%/%"`
   - `"&"`, `"|"`, `"!"`
   - `"=="`, `"!="`, `"<"`, `"<="`, `">="`, `">"`
3. Group `"Summary"`:
   - `all`, `any`
   - `sum`, `prod`
   - `min`, `max`

### Simple Dispatching

The following builtin functions are generic as well, i.e., you can write `methods` for them:

`[`, `[[`

`dimnames<-`, `dimnames`, `dim<-`, `dim`

`c`, `unlist`, `as.vector`, `is.na`, `is.nan`

### References

Appendix A, Classes and Methods of
Chambers, J. M. and Hastie, T. J. eds (1992) Statistical Models in S. Wadsworth & Brooks/Cole.

### See Also

`methods` for methods of non-Internal generic functions.

### Examples

    methods("Math")
    methods("Ops")
    methods("Summary")

    d.fr <- data.frame(x=1:9, y=rnorm(9))
    data.class(1 + d.fr) == "data.frame" ##-- add to d.f. ...