[R] Finding code for R functions

Duncan Murdoch murdoch at stats.uwo.ca
Wed Oct 19 01:00:02 CEST 2005


Wolfrum, Ed wrote:
> Greetings,
> 
> I am trying to figure out how to find the source code for R functions. I
> am specifically interested in finding the code for the "prcomp"
> function. I know that typing the function name without parenthesis will
> lead to the code (or to a .Internal or .FORTRAN or .C  call). However, I
> don't really understand what is going on. For example, typing "mean"
> gives a "UseMethod" response, while typing "mean.default" give the
> actual code:
> 
> 
>>mean
> 
> function (x, ...) 
> UseMethod("mean")
> <environment: namespace:base>
> 
>>mean.default
> 
> function (x, trim = 0, na.rm = FALSE, ...) 
> ---SNIP---
> }
> <environment: namespace:base>
> 
> Why is this? What does "mean.default" mean? I tried the same thing with
> "prcomp". With the stats package loaded, I cannot get to the source code
> for "prcomp".
> 
> 
>>require(stats)
> 
> [1] TRUE
> 
>>prcomp
> 
> function (x, ...) 
> UseMethod("prcomp")
> <environment: namespace:stats>

That is the source for prcomp.  It's a one-liner, that says to call the 
prcomp method for whatever type of x you're passing in.  As Bert said, 
you need to read up on methods.

> 
>>prcomp.default
> 
> Error: object "prcomp.default" not found

Notice that prcomp lives in "namespace:stats"?  That's the first place 
to look for prcomp methods.  Besides getAnywhere which Bert suggested, 
you can try

stats:::prcomp.default

to see the method.  (Methods aren't necessarily in the same namespace as 
the generic, but that's the most common place for them.)

Duncan Murdoch
>  
> How do I find the prcomp code? Are there general rules for finding the
> source code for functions that I should know?
> 
> Thanks in Advance,
> 
> Edward J. Wolfrum, Ph.D.
> National Renewable Energy Laboratory
> Golden, Colorado
> 
> ______________________________________________
> R-help at 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




More information about the R-help mailing list