# [R] Using napredict in prcomp

Prof Brian Ripley ripley at stats.ox.ac.uk
Wed Mar 11 04:20:54 CET 2009

```On Tue, 10 Mar 2009, Alain Paquette wrote:

> Hello all,
>
> I wish to compute site scores using PCA (prcomp) on a matrix with missing
> values, for example:
>
>   Drain    Slope    OrgL
> a    4    1    NA
> b    2.5    39    6
> c    6    8    45
> d    3    9    12
> e    3    16    4
> ...
>
> Where a,b... are sites.
> The command
>> pca<-prcomp(~ Drain + Slope + OrgL, data = t, center = TRUE, scale = TRUE,
> na.action=na.exclude)
> works great, and from
>> pca\$x
> I can get site scores, e.g.
>
>                      PC1          PC2          PC3
> a          NA           NA           NA
> b -2.10475208 -2.315128625 -0.885197753
> c  5.01177388 -1.778786252 -0.193285051
> d  0.28638602  0.298315086  0.386113799
> e -0.58861254  0.089498632 -0.434951813
> ...
>
> Easy enough...
> But how do I use the "napredict" argument? Is it intended as an argument to
> be used in the prcomp line (as suggested in ?prcomp), or is it to be used by
> itself, to replace NAs in the above site score matrix (which is what I really
> want to do).

I don't see an 'napredict' argument.  The help says

x: if 'retx' is true the value of the rotated data (the centred
(and scaled if requested) data multiplied by the 'rotation'
matrix) is returned.  Hence, 'cov(x)' is the diagonal matrix
'diag(sdev^2)'.  For the formula method, 'napredict' is
applied to handle the treatment of values omitted by the
'na.action'.

'napredict' is a function (so please look up its help), and it says R
applies it, not that you need to.  It is napredict which gives you the
NAs in the correct places.

>
> Thank you,
> Alain
>
> --
> Alain Paquette, Ph.D.
> alain.paquette at gmail.com
>
> Centre d'étude de la forêt (CEF)
> Université du Québec à Montréal
> www.cef-cfr.ca
>
>
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help