Re: [R] Apply function to do pairwise calculation

2013-10-01 Thread arun
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[1],colnames(mat1)%in%x[1]]; x2- mat1[rownames(mat1)%in% 
x[2],colnames(mat1)%in% x[2]];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 amand...@uchicago.edu
To: r-help@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.

Thanks in advance for your help!

Best,
Amanda

    [[alternative HTML version deleted]]

__
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.


__
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.


[R] Apply function to do pairwise calculation

2013-09-30 Thread Amanda Li
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.

Thanks in advance for your help!

Best,
Amanda

[[alternative HTML version deleted]]

__
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.


Re: [R] Apply function to do pairwise calculation

2013-09-30 Thread Adams, Jean
Amanda,

If I understand what you're trying to do, this example might help you.

M - structure(c(0.66, 0.05, -0.93, -0.61, 0.65, -0.25, 0.23, -0.89,
 0.37, 0.38, -0.91, 0.91, -0.05, -0.65, -0.94, 0.73, -0.88, 0.25,
0.04, -0.89, -0.47, -0.46, 0.86, -0.29, 0.92, 0.22, 0.77, -0.98,
 -0.56, 0.11, 0.35, -0.49, 0.48, 0.42, -0.28, 0.16, 0.2, 0.61,
0.7, 0.94, 0.89, 0.46, 0.93, 0.36, -0.95, -0.01, 0.27, 0.73,
 -0.17, -0.93, 0.36, 0.78, 0.02, -0.8, -0.57, -0.03, -0.81, -0.74,
0.16, 0.52, 0.65, -0.45, 0.46, -0.68, -0.85, 0.74, 0.77, -0.39,
 0.03, 0.93, -0.23, -0.91, -0.14, 0.77, -0.36, 0.43, -0.5, 0.5,
-0.68, -0.6, 0.12, -0.18, 0.16, -0.38, -0.18, -0.59, -0.3, -0.14,
 0.53, -0.53, -0.56, 0.14, -0.54, 0.93, 0.54, 0.03, 0.06, 0.14,
0.97, -0.09), .Dim = c(10L, 10L), .Dimnames = list(c(D, C,
 D, C, B, A, C, A, C, B), c(D, C, D, C,
 B, A, C, A, C, B)))

meanM - data.frame(row=NA, col=NA, mean=NA)

count - 0
for(i in 1:(ng-1)) {
for(j in (i+1):ng) {
count - count + 1
meanM[count, row] - groups[i]
 meanM[count, col] - groups[j]
meanM[count, mean] - mean(M[dimnames(M)[[1]]==groups[i],
dimnames(M)[[2]]==groups[j]])
 }}

Jean




On Mon, Sep 30, 2013 at 9:55 AM, Amanda Li amand...@uchicago.edu wrote:

 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.

 Thanks in advance for your help!

 Best,
 Amanda

 [[alternative HTML version deleted]]

 __
 R-help@r-project.org mailing list
 https://stat.ethz.ch/mailman/listinfo/r-help
 PLEASE do read the posting guide
 http://www.R-project.org/posting-guide.html
 and provide commented, minimal, self-contained, reproducible code.


[[alternative HTML version deleted]]

__
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.