[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