[R] Referring to matrix elements by name, iteratively

arun smartpink111 at yahoo.com
Mon Oct 15 21:52:36 CEST 2012


Hi,
May be this helps:
cwaves<-c(86,90,185,196,197,209,210,215,216,217,218,1162,1323,1338,1709)
 cwaves1<-as.character(cwaves)
mat[cwaves1[4],cwaves1[7]]
#[1] 0.0625
 mat[cwaves1[4],cwaves1[10]]
#[1] 0.03125
A.K.




----- Original Message -----
From: AHJ <ahadjixenofontos at med.miami.edu>
To: r-help at r-project.org
Cc: 
Sent: Monday, October 15, 2012 1:57 PM
Subject: [R] Referring to matrix elements by name, iteratively

#Here is a vector of IDs

> cwaves
[1]    86    90   185   196   197   209   210   215   216   217   218 

#Here is a matrix. The rows and columns correspond to the IDs in cwaves, and
the matrix is populated with a coefficient

> mat
     86 90 185 196 209     210 215      216      217      218
86    0  0   0   0   0 0.00000   0 0.000000 0.000000 0.000000
90    0  0   0   0   0 0.00000   0 0.000000 0.000000 0.000000
185   0  0   0   0   0 0.00000   0 0.062500 0.000000 0.015625
196   0  0   0   0   0 0.06250   0 0.000000 0.031250 0.000000
197   0  0   0   0   0 0.06250   0 0.000000 0.000000 0.000000
209   0  0   0   0   0 0.00000   0 0.000000 0.062500 0.000000
210   0  0   0   0   0 0.00000   0 0.000000 0.062500 0.000000
215   0  0   0   0   0 0.00000   0 0.000000 0.031250 0.000000
216   0  0   0   0   0 0.00000   0 0.000000 0.000000 0.000000
217   0  0   0   0   0 0.03125   0 0.031250 0.000000 0.000000
218   0  0   0   0   0 0.00000   0 0.000000 0.000000 0.031250
1162  0  0   0   0   0 0.00000   0 0.003906 0.007812 0.015625
1323  0  0   0   0   0 0.00000   0 0.007812 0.007812 0.000000
1338  0  0   0   0   0 0.00000   0 0.000000 0.000000 0.003906
1709  0  0   0   0   0 0.00000   0 0.000000 0.000000 0.000000

> dput(mat)
structure(c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.0625, 
0.0625, 0, 0, 0, 0, 0.03125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.0625, 0, 0, 0, 0, 0, 0, 0.03125, 
0, 0.003906, 0.007812, 0, 0, 0, 0, 0, 0.03125, 0, 0.0625, 0.0625, 
0.03125, 0, 0, 0, 0.007812, 0.007812, 0, 0, 0, 0, 0.015625, 0, 
0, 0, 0, 0, 0, 0, 0.03125, 0.015625, 0, 0.003906, 0), .Dim = c(15L, 
10L), .Dimnames = list(c("86", "90", "185", "196", "197", "209", 
"210", "215", "216", "217", "218", "1162", "1323", "1338", "1709"
), c("86", "90", "185", "196", "209", "210", "215", "216", "217", 
"218")))

#I know I can refer to element [4,6] in two ways, with the index, or with
the name

> mat[4,6]
[1] 0.0625
> mat["196","210"]
[1] 0.0625

But I want to use cwaves[4] and cwaves[10] to get the name, because this is
part of an iteration through thousands of IDs.

This didn't work, of course, because it tries to pull out mat[196,217] which
doesn't exist. 
> mat[cwaves[4], cwaves[10]]
Error: subscript out of bounds
> mat["cwaves[4]", "cwaves[10]"]
Error: subscript out of bounds

I also tried to put the name in a variable to then use as the index, and the
same thing happens, of course. 
> a <- cwaves[4]
> b <- cwaves[10]
> mat[a,b]
Error: subscript out of bounds
> mat["a","b"]
Error: subscript out of bounds

Is it possible to do this? I hope the way I language it makes sense. 

Thank you :)









--
View this message in context: http://r.789695.n4.nabble.com/Referring-to-matrix-elements-by-name-iteratively-tp4646264.html
Sent from the R help mailing list archive at Nabble.com.

______________________________________________
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