[R] Referring to matrix elements by name, iteratively

AHJ ahadjixenofontos at med.miami.edu
Mon Oct 15 19:57:11 CEST 2012


#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.



More information about the R-help mailing list