carol white
2014-Jun-19 11:19 UTC
[R] extract a subset of non-contiguous elements of a matrix
Hi, Is there a way to extract a subset of non-contiguous elements of a matrix elegantly and with 1 or very few scripts? Suppose I have a matrix of positive and negative numbers (m) and I want to retrieve only the positive number. This I can do which(m>0, arr.ind=T) which gives the indices of positive elements like (37,1), (80,1), ..., (54,2) etc. How can I extract positive numbers without looping on the indexes provided by which to make a new matrix? thanks, Carol [[alternative HTML version deleted]]
Bart Kastermans
2014-Jun-19 11:29 UTC
[R] extract a subset of non-contiguous elements of a matrix
On 19 Jun 2014, at 13:19, carol white <wht_crl at yahoo.com> wrote:> Hi, > Is there a way to extract a subset of non-contiguous elements of a matrix elegantly and with 1 or very few scripts? > > Suppose I have a matrix of positive and negative numbers (m) and I want to retrieve only the positive number. This I can do > > which(m>0, arr.ind=T) which gives the indices of positive elements like (37,1), (80,1), ..., (54,2) etc. How can I extract positive numbers without looping on the indexes provided by which to make a new matrix?What matrix do you want? For e.g.> tm.1 <- matrix(c(11,22,33,-4), ncol=2) > which(tm.1 > 0, arr.ind=TRUE)row col [1,] 1 1 [2,] 2 1 [3,] 1 2> tm.1[which(tm.1 > 0, arr.ind=TRUE)][1] 11 22 33 The extracted values do not form a matrix. Either the above contains the answer, or I don?t understand the question. Best, Bart> > thanks, > > Carol