extract a subset of non-contiguous elements of a matrix
This _was_ in the answer you got, but to clarify things, perhaps try this: (M <- matrix(1:9,3,3)) (ix <- rbind(c(3,2),c(1,3))) M[3,2] M[1,3] M[ix] -pd
On 19 Jun 2014, at 14:12 , carol white <wht_crl at yahoo.com> wrote:
The extracted values don't form a matrix and that's the question how to extract because which returns the indexes? that is, from 1,1 2,1 1,2 how to retrieve values? Or if at the position 2,1, there is a negative value, how to retrieve 1,1 1,2 Carol On Thursday, June 19, 2014 1:29 PM, Bart Kastermans <kasterma at kasterma.net> wrote: 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
[[alternative HTML version deleted]]
______________________________________________ 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.
Peter Dalgaard, Professor Center for Statistics, Copenhagen Business School Solbjerg Plads 3, 2000 Frederiksberg, Denmark Phone: (+45)38153501 Email: pd.mes at cbs.dk Priv: PDalgd at gmail.com