On 19 Jun 2014, at 13:19, carol white <wht_...@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 ______________________________________________ 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.