[R] Comparing two matrices

Dimitris Rizopoulos dimitris.rizopoulos at med.kuleuven.be
Thu Jul 6 14:43:42 CEST 2006


try something like:

mat1 <- matrix(0, 26, 100, dimnames = list(letters, 1:100))
mat2 <- cbind(sample(letters, 10), sample(100, 10))
###########
mat1[cbind(match(mat2[, 1], rownames(mat1)), match(mat2[, 2], 
colnames(mat1)))] <- 1


I hope it helps.

Best,
Dimitris

----
Dimitris Rizopoulos
Ph.D. Student
Biostatistical Centre
School of Public Health
Catholic University of Leuven

Address: Kapucijnenvoer 35, Leuven, Belgium
Tel: +32/(0)16/336899
Fax: +32/(0)16/337015
Web: http://med.kuleuven.be/biostat/
     http://www.student.kuleuven.be/~m0390867/dimitris.htm


----- Original Message ----- 
From: "Srinivas Iyyer" <srini_iyyer_bio at yahoo.com>
To: <r-help at stat.math.ethz.ch>
Sent: Thursday, July 06, 2006 2:18 PM
Subject: [R] Comparing two matrices


> hi:
>
> I have matrix with dimensions(200 X 20,000). I have
> another file, a tab-delim file where first column
> variables are row names and second column variables
> are column names.
>
>
> For instance:
>
>> tmat
>  Apple Orange Mango Grape Star
> A     0      0     0     0    0
> O     0      0     0     0    0
> M     0      0     0     0    0
> G     0      0     0     0    0
> S     0      0     0     0    0
>
>
>
>> tb # tab- delim file.
>      V1 V2
> 1  Apple  S
> 2  Apple  A
> 3  Apple  O
> 4 Orange  A
> 5 Orange  O
> 6 Orange  S
> 7  Mango  M
> 8  Mango  A
> 9  Mango  S
>
>
> I have to read each line of the 'tb' (tab delim file),
> take the first variable, check if matches any rowname
> of the matrix. Take the second variable of the row in
> and check if it matches any column name.  If so,  put
> 1 else leave it.
>
>
> The following is a small piece of code that, I felt is
> a solutions. However, since my original matrix and
> tab-delim file is very very huge, I am not sure if it
> is really doing the correct thing. Could any one
> please help me if I am doing this correct.
>
>
>
>> for(i in 1:length(tb[,1])){
> +  r = tb[i,1]
> +  c = as.character(tb[i,2])
> +  tmat[rownames(tmat)==c,colnames(tmat)==r] <-1
> + }
>
>
>
>> tmat
>  Apple Orange Mango Grape Star
> A     1      1     1     0    0
> O     1      1     0     0    0
> M     0      0     1     0    0
> G     0      0     0     0    0
> S     1      1     1     0    0
>
>
>
> Thanks.
>
> ______________________________________________
> R-help at stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide! 
> http://www.R-project.org/posting-guide.html
> 


Disclaimer: http://www.kuleuven.be/cwis/email_disclaimer.htm



More information about the R-help mailing list