[R] strange matrix behaviour: is there a matrix with one row?

Wiener, Matthew matthew_wiener at merck.com
Fri Apr 7 15:31:10 CEST 2006

Use drop = FALSE in your subscripting calls.  That will retain "matrixness".

For example:
y <- matrix(1:8, ncol = 2)
is.matrix(y[-c(1,2,3),,drop = FALSE]

More info is on the help page for "[".  You can type:  ?"[" to get it from
the command line.

Hope this helps,

Matt Wiener

-----Original Message-----
From: r-help-bounces at stat.math.ethz.ch
[mailto:r-help-bounces at stat.math.ethz.ch] On Behalf Of
ryszard.czerminski at novartis.com
Sent: Friday, April 07, 2006 9:16 AM
To: Gabor Grothendieck
Cc: Brian Quinif; r-help at stat.math.ethz.ch; r-help-bounces at stat.math.ethz.ch
Subject: [R] strange matrix behaviour: is there a matrix with one row?

Consider this:

> y <- matrix(1:8, ncol=2)
> is.matrix(y[-c(1,2),])
[1] TRUE
> is.matrix(y[-c(1,2,3),])
> is.matrix(y[-c(1,2,3,4),])
[1] TRUE

It seems like an inconsistent behaviour:
- with 2 or more rows we have a matrix
- with 1 row we do not have a matrix and
- with 0 rows we have a matrix again

I just stumbled on this behaviour, because I had a problem
with my program in which I have assumed that matrix with
some rows removed is still a matrix, which seems to be mostly
true, but it is not true if only one row is left.

Comments? Suggestions?
How to work around this problem - without to many "if" statements?

Best regards,

R-help at stat.math.ethz.ch mailing list
PLEASE do read the posting guide!

More information about the R-help mailing list