Re: [R] listing all functions in R

From: Gavin Simpson <gavin.simpson_at_ucl.ac.uk>
Date: Sat 06 Jan 2007 - 16:02:40 GMT

On Sat, 2007-01-06 at 10:43 -0500, Duncan Murdoch wrote:
> On 1/6/2007 9:25 AM, Gavin Simpson wrote:
> > On Sat, 2007-01-06 at 13:48 +0000, Prof Brian Ripley wrote:
> >> Could you tell us what you mean by
> >
> > Thank you for your reply, Prof. Ripley.
> >
> >> - 'function' (if() and + are functions in R, so do you want those?)
> >
> > I was thinking about functions that are used like this: foo()
> > So I don't need things like "names<-". I don't need functions like +. -,
> > $, as I can highlight the separately if desired, though I'm not doing
> > this at the moment.
> >
> > Functions like for() while(), if() function() are handled separately.
> >
> >> - 'a base R installation'? What is 'base R' (standard + recommended
> >> packages?) And on what platform: the list is platform-specific?
> >
> > Yes, I mean standard + recommended packages. As for platform, most of my
> > intended audience will be MS Windows users, though I am using Linux
> > (Fedora) to generate this list (i.e. my R installation is on Linux).

Cheers Duncan.

> Be careful: the installed list of functions differs slightly from
> platform to platform. For example, on Windows there's a function
> choose.dir in the utils package, but I don't think this exists on Unix.

Good point. However as I am in control of the R snippets I display on the web pages and the highlighting file/list, I can add the odd thing that Brian Ripley's findfuns function doesn't list because of platform differences.

What I wanted to avoid was having to add functions to my key word list each time I wrote another page on the site that used a new R snippet. As it is early days, I'd probably spend about as much time adding functions to the keyword list as writing pages for the site - which would put me of a bit and slow me down. At least now I only have to add the odd function missed.

>
> The list also varies from version to version, so if you could manage to
> run some code in the user's installed R to generate the list on the fly,
> you'd get the most accurate list.

Yes. I'm planning on wrapping findfuns into a little R script that searches additional packages that I'll use, and that will update the packages before compiling the list. I can then run this script periodically in R to update the list, as R is updated etc.

>
> Duncan Murdoch

Many thanks for your reply,

All the best,

G

>
> >
> >> Here is a reasonable shot:
> >>
> >> findfuns <- function(x) {
> >> if(require(x, character.only=TRUE)) {
> >> env <- paste("package", x, sep=":")
> >> nm <- ls(env, all=TRUE)
> >> nm[unlist(lapply(nm, function(n) exists(n, where=env,
> >> mode="function",
> >> inherits=FALSE)))]
> >> } else character(0)
> >> }
> >> pkgs <- dir(.Library)
> >> z <- lapply(pkgs, findfuns)
> >> names(z) <- pkgs
> >
> > Excellent, that works just fine for me. I can edit out certain packages
> > that I don't expect to use, before formatting as desired. I can also use
> > this function on a library of packages that I use regularly and will be
> > using in the web pages.
> >
> >> I don't understand your desired format, but
> >>
> >> write(sQuote(sort(unique(unlist(z)))), "")
> >
> > I wanted a single string "...", with entries enclosed in "''" and
> > separated by "," (this is to go in a PHP array). I can generate such a
> > string from your z, above, as follows:
> >
> > paste(sQuote(sort(unique(unlist(z)), decreasing = TRUE)),
> > collapse = ", ")
> >
> >> gives a single-column quoted list. It does include internal functions,
> >> operators, S3 methods ... so you probably want to edit it.
> >
> > Once again, thank you.
> >
> > All the best
> >
> > Gav
> >
> >>
> >> On Sat, 6 Jan 2007, Gavin Simpson wrote:
> >>
> >>> Dear List,
> >>>
> >>> I'm building an R syntax highlighting file for GeSHi [*] for a website I
> >>> am currently putting together. The syntax file needs a list of keywords
> >>> to highlight. How can I generate a list of all the functions in a base R
> >>> installation?
> >>>
> >>> Ideally the list would be formatted like this:
> >>>
> >>> "'fun1', 'fun2', 'fun3'"
> >>>
> >>> when printed to the screen so I can copy and paste it into the syntax
> >>> file.
> >>>
> >>> I'm sure this has been asked before, but I stupidly didn't save that
> >>> email and I couldn't come up with a suitable query parameter for
> >>> Jonathan Baron's search site to return results before timing out.
> >>>
> >>> Thanks in advance,
> >>>
> >>> Gav
> >>>
>

-- 
%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%
Gavin Simpson                     [t] +44 (0)20 7679 0522
ECRC                              [f] +44 (0)20 7679 0565
UCL Department of Geography
Pearson Building                  [e] gavin.simpsonATNOSPAMucl.ac.uk
Gower Street
London, UK                        [w] http://www.ucl.ac.uk/~ucfagls/
WC1E 6BT                          [w] http://www.freshwaters.org.uk/
%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%

______________________________________________
R-help@stat.math.ethz.ch mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.
Received on Sun Jan 07 03:25:08 2007

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.1.8, at Sat 06 Jan 2007 - 17:30:25 GMT.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-help. Please read the posting guide before posting to the list.