[R] Odd behaviour of removing 'nothing' from an array or data frame

Leeds, Mark (IED) Mark.Leeds at morganstanley.com
Tue Oct 31 16:18:22 CET 2006


I think I had that similar problem at some point in the way past and got
around it by checking the length of dubious records before I
Sent it into the expression. If the length is zero don't send it into
the expression.


-----Original Message-----
From: r-help-bounces at stat.math.ethz.ch
[mailto:r-help-bounces at stat.math.ethz.ch] On Behalf Of
Richard.Cotton at hsl.gov.uk
Sent: Tuesday, October 31, 2006 9:02 AM
To: r-help at stat.math.ethz.ch
Subject: [R] Odd behaviour of removing 'nothing' from an array or data
frame

I've just found some behaviour which strikes me as odd, but I'm not sure
whether it's a bug or a feature.  If you don't mind, I'd like to explain
via a couple of examples.

Let x = 1:10.
Then intuitively, to me at least, the command x[-integer(0)] should
leave x untouched.  However the actual output under R2.4.0 is
integer(0).

A slightly more involved example demonstrates why I think this behaviour
is back to front.
First we define a data frame, in this case some people, with their
heights.
peoples.heights = data.frame(names = c("Alice", "Bob", "Carol"), heights
= c(1.67, 1.85, 175))

To make sure the heights are sensible, we define a filter out impossibly
tall people.
dubious.records = which(peoples.heights$heights > 2.5)          #3
peoples.heights = peoples.heights[-dubious.records,]

This all works fine since dubious.records is not empty.  However, if all
the records had been entered properly, then we would get
#dubious.records = integer(0)

Then the command peoples.heights = peoples.heights[-dubious.records,]
strips all the rows to give
#[1] names   heights
#<0 rows> (or 0-length row.names)

i.e. instead of removing the bad records, I've lost everything.
I know that it's possible to recode this so problems don't occur, but
the point is that the answer is unexpected.

Can anybody explain if this behaviour is intentional or useful in some
way, or is it an oversight?

Regards,
Richie.

Mathematical Sciences Unit
HSL
Buxton
SK17 9JN
01298 21(x8672)


------------------------------------------------------------------------
ATTENTION:

This message contains privileged and confidential\ informati...{{dropped}}



More information about the R-help mailing list