KW, I don't know anything about arrayInd, so I can't help with that question.
In order to determine if there is a better way to do your comparison depends largely on what you want to do with the results. The way that you're doing it now seems fine to me, but I wonder what you want to use the indexes for. You could approach the issue from another angle, which preserves the original matrix structure. compare <- cbind(td[, 1:5]<=5, td[, 6:10]<=4) compare td[compare] td2 <- td td2[!compare] <- NA td2 You are having difficulty extracting. The information that you are providing are all vectors and scalars. td[idxs[10,]] td[c(13, 5)] td[idxs[10,1]] td[13] If you want to extract by row and column, you have to provide matrices. td[idxs[10, , drop=FALSE]] td[t(matrix(c(13, 5)))] The error in your last attempt is caused by trying to extract row 10 column 3 from a matrix (idxs) that has only 2 columns. td[idxs[10,3]] idxs[10,3] dim(idxs) Hope this helps. Jean On Wed, Apr 3, 2013 at 9:53 AM, Keith S Weintraub <kw1...@gmail.com> wrote: > Folks, > > I have Googled but not found much regarding arrayInd aside from the > "which" help page. > > Any good examples or docs on what arrayInd does that is better or > different from which()? > > In addition take the following 20x10 matrix: > > td<-structure(c(1, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 4, 6, 6, 6, 6, > 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 1, 6, 6, 6, 6, 6, > 6, 6, 1, 6, 6, 6, 6, 6, 6, 3, 6, 6, 6, 6, 3, 6, 6, 6, 6, 6, 6, > 6, 1, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 5, 6, 6, 6, 6, 6, 6, 6, > 3, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 4, 6, 6, 6, 6, 6, 6, 6, 2, > 6, 6, 1, 6, 6, 6, 6, 6, 6, 6, 6, 1, 6, 6, 5, 6, 6, 6, 6, 5, 6, > 6, 3, 6, 6, 6, 6, 6, 6, 6, 6, 2, 6, 6, 6, 6, 6, 6, 6, 2, 6, 6, > 4, 6, 6, 6, 6, 6, 6, 6, 6, 1, 6, 6, 6, 6, 6, 6, 6, 6, 6, 2, 6, > 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 3, 6, 6, 6, 6, > 6, 6, 6, 6, 6, 6, 6, 3, 6, 6, 6, 6, 6, 6, 6), .Dim = c(20L, 10L > )) > > I want to find the cells which (hah!) are <= c(rep(5,5), rep(4,5)). That > is my bounds are by column. > > Is there a better way to do this other than: > > bounds<-c(rep(5,5), rep(4,5)) > idxs<-which(apply(td, 2, "<=", bounds), arr.ind = TRUE) > > > idxs > row col > [1,] 1 1 > [2,] 13 1 > [3,] 13 2 > [4,] 1 3 > [5,] 8 3 > [6,] 13 3 > [7,] 1 4 > [8,] 13 4 > [9,] 1 5 > [10,] 13 5 > [11,] 1 6 > [12,] 4 6 > [13,] 13 6 > [14,] 4 7 > [15,] 13 7 > [16,] 1 8 > [17,] 4 8 > [18,] 13 8 > [19,] 3 9 > [20,] 1 10 > [21,] 13 10 > > Lastly can you explain these results: > > > td[idxs[10,]] > [1] 4 6 > > > td[idxs[10,1]] > [1] 4 > > > td[idxs[10,2]] > [1] 6 > > > td[idxs[10,3]] > Error: subscript out of bounds > > Thanks in advance for your help, > KW > > -- > > ______________________________________________ > 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. > [[alternative HTML version deleted]] ______________________________________________ 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.