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: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of
[EMAIL PROTECTED]
Sent: Friday, April 07, 2006 9:16 AM
To: Gabor Grothendieck
Cc: Brian Quinif; [email protected]; [EMAIL PROTECTED]
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),])
[1] FALSE
> 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,
Ryszard

______________________________________________
[email protected] mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide!
http://www.R-project.org/posting-guide.html

______________________________________________
[email protected] mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html

Reply via email to