This function figures out whether the input function is a regular/primitive/internal function, a internal/S3/S4 generic, or a S3/S4/RC method. This is function is slightly simplified as it's possible for a method from one class to be a generic for another class, but that seems like such a bad idea that hopefully no one has done it.

ftype(f)

## Arguments

f unquoted function name

## Value

a character of vector of length 1 or 2.

## Examples

ftype(%in%)#> [1] "function"ftype(sum)#> [1] "primitive" "generic"  ftype(t.data.frame)#> [1] "S3"     "method"ftype(t.test) # Tricky!#> [1] "S3"      "generic"ftype(writeLines)#> [1] "internal"ftype(unlist)#> [1] "internal" "generic"