[R] body of non-visible function

Prof Brian Ripley ripley at stats.ox.ac.uk
Thu May 5 17:54:17 CEST 2005


On Thu, 5 May 2005, Liaw, Andy wrote:

>> From: Anna Oganyan
>>
>> Hello,
>> Is there any possibility in R to see the body of the "non-visible"
>> function, for
>> example "princomp"?
>> If I do :
>>
>> > methods(princomp)
>>
>> so, I get that princomp.default and princomp.formula are non-visible
>> functions and
>> body(princomp.default) doesn't show it.
>
> You may want to learn about getAnywhere() and getS3method().
>
>
>> In particular, I guess I have a very naïve question...
>> I'd like to see how scores calculation is implemented in the function
>> princomp. Because when I multiply my data matrix on the
>> matrix of loadings
>> >data.matrix %*% princomp(data.matrix, scores=T)$loadings
>>
>> I get different result than just doing
>>
>> >princomp(data.matrix, scores=T)$scores.
>
> Variables are centered and scaled, so you want to do
>
>  scale(data.matrix) %*% loadings(princomp(data.matrix))

Only centred.  Had this been princomp(data.matrix, cor=TRUE, scores=TRUE)
they would have been scaled.  It is better to follow my hint of looking at
predict.princomp:

     object <- princomp(data.matrix)
     scale(data.matrix, object$center, object$scale) %*% object$loadings

BTW, data.matrix is an R function, so not a good choice of name.

-- 
Brian D. Ripley,                  ripley at stats.ox.ac.uk
Professor of Applied Statistics,  http://www.stats.ox.ac.uk/~ripley/
University of Oxford,             Tel:  +44 1865 272861 (self)
1 South Parks Road,                     +44 1865 272866 (PA)
Oxford OX1 3TG, UK                Fax:  +44 1865 272595


More information about the R-help mailing list