[R] extract a subset of non-contiguous elements of a matrix

peter dalgaard pdalgd at gmail.com
Thu Jun 19 15:02:00 CEST 2014


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



More information about the R-help mailing list