On 15-10-2012, at 22:17, David L Carlson wrote: > Actually the rows and columns do not correspond to the IDs in cwaves since > rownames 1162, 1323, 1338, and 1709 do not appear in cwaves and there is no > column 197 in mat.
I didn't see that. I just looked at what the OP did. > If cwaves is defined as equal to colnames(mat), you will > get one definition, but it will not match cwaves defined as equal to > rownames(mat). > Then the OP could use cwaves for the column names and rwaves for the rownames. As long as both are character vectors. Berend > ---------------------------------------------- > David L Carlson > Associate Professor of Anthropology > Texas A&M University > College Station, TX 77843-4352 > >> -----Original Message----- >> From: r-help-boun...@r-project.org [mailto:r-help-bounces@r- >> project.org] On Behalf Of Berend Hasselman >> Sent: Monday, October 15, 2012 2:51 PM >> To: AHJ >> Cc: r-help@r-project.org >> Subject: Re: [R] Referring to matrix elements by name, iteratively >> >> >> On 15-10-2012, at 19:57, AHJ wrote: >> >>> #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. >> >> Turn cwaves into a vector of characters: >> >> cwaves <- as.character(cwaves) >> >> Now you should be able to index like this: mat[cwaves[4], cwaves[10]] >> >> Berend >> >> ______________________________________________ >> R-help@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. > ______________________________________________ R-help@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.