baptiste
baptiste

Reputation: 77096

find all functions (including private) in a package

I know ls("package:grid") and find.funs("package:grid") in mvbutils but apparently neither of them can find non-exported functions and methods that are only accessible internally or with ::: or getAnywhere.

I've had to source the files in the /R directory of the source package and use ls() on a clean global environment, but there must be a better way, no?

Upvotes: 34

Views: 15126

Answers (2)

dardisco
dardisco

Reputation: 5274

This appears to be something of a perennial here.

If it's this one-liners you're after then this should be a contender (credit @Joshua):

ls(getNamespace("grid"), all.names=TRUE)

(Link is to a question that was asked after the above, but closely related).

As grid is a base package and I haven't yet moved up to R 3... I'm getting 756 functions with Version 2.15.1. vs. 503 from the unclass solution.

Upvotes: 27

kohske
kohske

Reputation: 66842

you can use asNamespace:

> methods(cbind)
[1] cbind.data.frame cbind.grobGrid   cbind.ts*       

   Non-visible functions are asterisked
> r <- unclass(lsf.str(envir = asNamespace("stats"), all = T))
> r[grep("cbind.ts", r)]
[1] ".cbind.ts" "cbind.ts" 

cbind.ts in stats package is invisible but can find in envir = asNamespace("stats").

Upvotes: 34

Related Questions