From pburns at pburns.seanet.com  Wed Sep 24 19:59:29 2003
From: pburns at pburns.seanet.com (Patrick Burns)
Date: Wed Sep 24 20:05:55 2003
Subject: [Rd] partial matching in data frame subscripting
Message-ID: <3F71DB81.9000606@pburns.seanet.com>

I'm not sure if the following is a bug or a feature:

 > jjmat <- array(1:6, c(2,3), list(c('ABC', 'DEF'), c('xyz', 'tuv', 
'qrs')))
 > jjdf <- as.data.frame(jjmat)
 > jjmat['AB', ]
Error: subscript out of bounds
 > jjdf['AB',]
    xyz tuv qrs
ABC   1   3   5
 > jjmat[, 'tu']
Error: subscript out of bounds
 > jjdf[, 'tu']
Error in "[.data.frame"(jjdf, , "tu") : undefined columns selected

The questionable behaviour is that partial matching of dimnames
is not allowed except for the rows in data frames.

(This is 1.8.0 alpha -- 1.7 would have given NULL when the
column of a data frame was partially matched.)

Without good arguments to the contrary, I would lean toward
partial matching not being allowed at all.  (And so would my
client who got confused about this -- which is the reason I started
looking at it.)


Also there is  a typo in the [.data.frame help file, in the Warning
section:

To drop from a data frame to a list, 'drop = FALSE' has
     to specified explicitly.

should read:

To drop from a data frame to a list, 'drop = TRUE' has
     to be specified explicitly.


Patrick Burns

Burns Statistics
patrick@burns-stat.com
+44 (0)20 8525 0696
http://www.burns-stat.com
(home of S Poetry and "A Guide for the Unwilling S User")


[Rd] partial matching in data frame subscripting
Patrick Burns