How to find all functions in an R package?
What is the best way to find all the functions associated in a package?? I am currently going through the caTools package. If I do ?caTools
or ??caTools
I am simply going to get search for functions called that but not the functions in the package. Is there an easy way to access all the functions in the R gui? Are there any good ways to search for functions?
Solution 1:
You can get all the objects in your package with:
ls("package:caTools")
You can get all the function signatures in your package with:
lsf.str("package:caTools")
Solution 2:
I am guessing that you are just looking for help(package = caTools)
, which will open your browser to the relevant help page that lists all the functions in the "caTools" package.
You can also try: library(help = caTools)
, but that doesn't seem to capture everything. The nice thing about this latter approach is that you can capture the output in case you needed to refer to it somewhere else:
x <- library(help = caTools)
x$info[[2]]
# [1] "LogitBoost LogitBoost Classification Algorithm"
# [2] "base64encode Convert R vectors to/from the Base64 format"
# [3] "caTools-package Tools: moving window statistics, GIF, Base64,"
# [4] " ROC AUC, etc."
# [5] "colAUC Column-wise Area Under ROC Curve (AUC)"
# [6] "combs All Combinations of k Elements from Vector v"
# [7] "predict.LogitBoost Prediction Based on LogitBoost Classification"
# [8] " Algorithm"
# [9] "read.ENVI Read and Write Binary Data in ENVI Format"
# [10] "read.gif Read and Write Images in GIF format"
# [11] "runmad Median Absolute Deviation of Moving Windows"
# [12] "runmean Mean of a Moving Window"
# [13] "runmin Minimum and Maximum of Moving Windows"
# [14] "runquantile Quantile of Moving Window"
# [15] "runsd Standard Deviation of Moving Windows"
# [16] "sample.split Split Data into Test and Train Set"
# [17] "sumexact Basic Sum Operations without Round-off Errors"
# [18] "trapz Trapezoid Rule Numerical Integration"
Solution 3:
If you want all exported functions (i.e. functions accessible via ::
), then getNamespaceExports(pkgName)
will do the trick.
If you want all functions in the package, including the ones accessible via :::
, you can do ls(getNamespace(pkgName))
.
As an example, with the stringr
package:
getNamespaceExports("stringr")
[1] "fixed" "ignore.case" "invert_match" "perl" "str_c" "str_count" "str_detect" "str_dup" "str_extract"
[10] "str_extract_all" "str_join" "str_length" "str_locate" "str_locate_all" "str_match" "str_match_all" "str_pad" "str_replace"
[19] "str_replace_all" "str_split" "str_split_fixed" "str_sub" "str_sub<-" "str_trim" "str_wrap" "word"
However, we know that stringr:::is.perl
exists in the package, and as you can see:
setdiff(ls(getNamespace("stringr")), getNamespaceExports("stringr"))
[1] "case.ignored" "check_pattern" "check_string" "compact" "is.fixed" "is.perl" "match_to_matrix" "re_call" "recyclable"
[10] "re_mapply"
So, we see that ls(getNamespace("stringr"))
contains all of getNamespaceExports("stringr")
in addition to the :::
functions.
Solution 4:
The pacman
package (CRAN) (Dev Version: GitHub) works well for this. Specifically the p_funs
function.
The syntax is:
p_funs(caTools) # exported
p_funs(caTools, TRUE) # includes non-exported
Solution 5:
Another way is to use collidr
package
library(collidr)
library(dplyr)
collidr::CRANdf %>%
filter(package_names == "caTools")
# package_names function_names
# 1 caTools caTools-package
# 2 caTools base64encode
# 3 caTools base64decode
# 4 caTools colAUC
# 5 caTools combs
# 6 caTools LogitBoost
# 7 caTools predict.LogitBoost
# 8 caTools read.ENVI
# 9 caTools write.ENVI
# 10 caTools read.gif
# 11 caTools write.gif
# 12 caTools runmad
# 13 caTools runmean
# 14 caTools runmin
# 15 caTools runmax
# 16 caTools runquantile
# 17 caTools runsd
# 18 caTools sample.split
# 19 caTools sumexact,
# 20 caTools cumsumexact
# 21 caTools trapz