[R] matrix - pairwise comparison of columns

arun smartpink111 at yahoo.com
Thu May 16 07:33:25 CEST 2013


Hi,
May be this helps:

c1<-combn(seq_len(ncol(m)),2)
 mat1<- matrix(0,ncol=3,nrow=3,dimnames=list(colnames(m),colnames(m)))
vec1<-unlist(lapply(seq_len(ncol(c1)),function(i) {m1<-m[,c1[,i]]; length(which(m1[,1]!=0 & m1[,2]!=0)) }))
mat1[lower.tri(mat1)]<-vec1
 mat1
#    rs1 rs2 rs3
#rs1   0   0   0
#rs2   1   0   0
#rs3   2   1   0

#Converting to sparseMatrix
library(Matrix)
 mat2<-as(mat1,"sparseMatrix")
#or

mat2<-Matrix(mat1,sparse=TRUE)
3 x 3 sparse Matrix of class "dtCMatrix"
#    rs1 rs2 rs3
#rs1   .   .   .
#rs2   1   .   .
#rs3   2   1   .




A.K.



----- Original Message -----
From: Hermann Norpois <hnorpois at gmail.com>
To: r-help <r-help at r-project.org>
Cc: 
Sent: Wednesday, May 15, 2013 3:57 PM
Subject: [R] matrix - pairwise comparison of columns

Hello,

I would like to do something with a matrix:
1) The columns should be compared pairwise.
2) And the result should be a matrix.

I try to illustrate the problem with a testset.

> m
     rs1 rs2 rs3
[1,]   1   1   1
[2,]   0   1   0
[3,]   2   0   1
> dput (m)
structure(c(1, 0, 2, 1, 1, 0, 1, 0, 1), .Dim = c(3L, 3L), .Dimnames = list(
    NULL, c("rs1", "rs2", "rs3")))
> which (m[,1] !=0&m[,2] != 0) #How many rows between two columns that are
both non zero

How can I automate the pairwise which-statement?

As result I would like to have a matrix like this

     rs1 rs2 rs3
rs1
rs2  1
rs3  2    1

Is there a tool in R that helps?

Thanks
Hermann

    [[alternative HTML version deleted]]

______________________________________________
R-help at 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.




More information about the R-help mailing list