On Mon, 19 Jun 2000, Erich Neuwirth wrote:
>
> why does teh following code not work?
>
> a<-rnorm(50)
> dim(a)<-c(10,5)
>
> mycov<-function(mat,i,j){
> sum((mat[,i]-mean(mat[,i]))*(mat[,j]-mean(mat[,j])))
> }
>
> covmat<-function(X){
> outer(1:dim(X)[2],1:dim(X)[2],function(v1,v2){mycov(X,v1,v2)})}
>
> from what i know
> covmat(a) should give the covariance matrix of a, but it gives a matrix
> with
> constant elements.
>
> mycov(a,1,2) ans simlar calls are doing the right thing.
> so somehow i am misunderstanding outer here.
You're misunderstanding outer().
outer(x,y,f) does just one call to f with arguments created by stacking x
and y together in the right way, so f has to be vectorised.
In any case, var(X) returns the covariance matrix of X, much more
efficiently.
-thomas
Thomas Lumley
Assistant Professor, Biostatistics
University of Washington, Seattle
-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
r-help mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !) To: r-help-request at
stat.math.ethz.ch
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._