Hope this does what you want: > library(gregmisc) > cmb <- combinations(length(aa), 2) > apply(cmb, 1, function(i) sum(diag(aa[[i[1]]] %*% aa[[i[2]]])) / + (sum(diag(aa[[i[1]]])) * sum(diag(aa[[i[2]]])))) [1] 0.5363973 0.3336318 0.6593545
Andy > From: Stephane DRAY > > Hello, > > suppose I have a list with matrices: > > a=list(x1=matrix(rnorm(10),5,2),x2=matrix(rnorm(10),5,2),x3=ma > trix(rnorm(10),5,2)) > > I want to compute for all combination of xi and xj (x1,x2 > x1,x3 and x2,x3) > a value. > This value is given for the pair x1,x2 by > trace(x1%*%t(x1)%*%x2%*%t(x2)) / > trace(x1%*%t(x1))*trace(x2%*%t(x2)) > > I know that product matrices t(xi)%*%xi can be obtained by: > > aa=lapply(a,crossprod) > > but I do not know how to "mix" the values in aa to obtain the > desired values. > > Is there a way to do it without for loop ? > > Thanks in advances, > > sincerely > > St�phane DRAY > -------------------------------------------------------------- > ------------------------------------ > > D�partement des Sciences Biologiques > Universit� de Montr�al, C.P. 6128, succursale centre-ville > Montr�al, Qu�bec H3C 3J7, Canada > > Tel : (514) 343-6111 poste 1233 Fax : (514) 343-2293 > E-mail : [EMAIL PROTECTED] > -------------------------------------------------------------- > ------------------------------------ > > Web > http://www.steph280.freesurf.fr/ > > > ______________________________________________ > [EMAIL PROTECTED] mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide! > http://www.R-project.org/posting-guide.html > > ______________________________________________ [EMAIL PROTECTED] mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
