[R] extract a subset of non-contiguous elements of a matrix
Bart Kastermans
kasterma at kasterma.net
Thu Jun 19 13:29:09 CEST 2014
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
More information about the R-help
mailing list