# [R] Apply function to do pairwise calculation

arun smartpink111 at yahoo.com
Tue Oct 1 05:20:27 CEST 2013

```Hi,
Not sure if this helps.

#example dataset
set.seed(24)
mat1<-matrix(sample(1:50,20*20,replace=TRUE),ncol=20)
set.seed(49)
colnames(mat1)<- sample(rep(LETTERS[1:4],5),20)
rownames(mat1)<- colnames(mat1)

mat2<-combn(LETTERS[1:4],2)
res<- sapply(split(mat2,col(mat2)),function(x){ x1<-mat1[rownames(mat1)%in% x,colnames(mat1)%in%x]; x2<- mat1[rownames(mat1)%in% x,colnames(mat1)%in% x];avecor(x1,x2)})
names(res)<- apply(mat2,2,paste,collapse="")
res
#       AB        AC        AD        BC        BD        CD
#0.4806725 0.4505996 0.6160342 0.5567617 0.3721136 0.4480448

A.K.

----- Original Message -----
From: Amanda Li <amandali at uchicago.edu>
To: r-help at r-project.org
Cc:
Sent: Monday, September 30, 2013 10:55 AM
Subject: [R] Apply function to do pairwise calculation

Hello,

I want to do pairwise calculation, but I am not sure how to do so.

i.e. I have a correlation matrix M 200*200. Namely colnames(M)=rownames(M).
In addition, colnames(M) is one of A, B, C, D. I want to first sort the
matrix M into 16 modules according to colnames and rownames, and then apply:
avecor <- function(x,y) {
z <- (sum(cor(x,y)*cor(x,y))/length(cor(x,y)))^0.5
return(z)
}

So as to calculate the average correlation between A,B; A,C; A,D; B,C; B,D;
C,D.

Best,
Amanda

[[alternative HTML version deleted]]

______________________________________________
R-help at r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help