[R] arrayInd and which

Keith S Weintraub kw1958 at gmail.com
Wed Apr 3 16:53:56 CEST 2013


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

--



More information about the R-help mailing list