[R] Matrix problem

David Winsemius dwinsemius at comcast.net
Wed Apr 11 01:54:17 CEST 2012


On Apr 10, 2012, at 7:33 PM, Worik R wrote:

> Friends
>
> I am extracting sub-sets of the rows of a matrix.  Generally the  
> result is
> a matrix.  But there is a special case.  When the result returned is a
> single row it is returned as a vector (in the example below an integer
> vector).  If there are 0, or more than 1 rows returned the result is a
> matrix.
>
> I am doing this in a function and I cannot be sure how many rows I am
> removing.  How can I do this in a general way that always returns a  
> matrix?
>

?"["

 > M[1, , drop=FALSE]
    a b c d
a1 0 3 2 1
 > class( M[1, , drop=FALSE] )
[1] "matrix"

>
>> M <- matrix(0:3, nrow=3, ncol=4)
>> colnames(M) <- c('a','b','c','d')
>> rownames(M) <- c('a1','b2','c3')
>> N <- M[M[,"a"]==0,]
>> O <- M[M[,"a"]!=0,]
>> P <- M[M[,"a"]==100,]
>> c(class(M), class(N), class(O), class(P))
> [1] "matrix"  "integer" "matrix"  "matrix"
>> M
>   a b c d
> a1 0 3 2 1
> b2 1 0 3 2
> c3 2 1 0 3
>> N
> a b c d
> 0 3 2 1
>> O
>   a b c d
> b2 1 0 3 2
> c3 2 1 0 3
>> P
>     a b c d
>>
>
> cheers
> Worik
>
> 	[[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.

David Winsemius, MD
West Hartford, CT



More information about the R-help mailing list