[Rd] possible BUG with as.data.frame() and/or [.data.frame

Peter Dalgaard BSA p.dalgaard@biostat.ku.dk
08 Mar 2000 11:14:17 +0100


"Jens Oehlschlägel-Akiyoshi" <jens.oehlschlaegel-akiyoshi@mdfactory.de> writes:

> Here is a possible BUG with as.data.frame() and/or [.data.frame which broke
> Michael Lapsleys RODBC-Code.
> Can anyone confirm it is a bug or a 'feature' of the prototype?
> 
> 
> tablename <- "abc"
> a <- as.data.frame(cbind("abc", 1:3))
> b <- as.data.frame(cbind(tablename, 1:3))
> 
> # ok
> > a
>    V1 V2
> 1 abc  1
> 2 abc  2
> 3 abc  3
> 
> # missing column name
> > b
>   tablename
> 1       abc 1
> 2       abc 2
> 3       abc 3
> 
> # subsetting ok
> > b[1,1]
> [1] abc
> Levels:  abc
> 
> # subsetting fails
> > b[1,2]
> Error in [.data.frame(b, 1, 2) : undefined columns selected
> 
> 
> ##by contrast
> > data.frame(cbind(tablename, 1:3))
>   tablename Var.2
> 1       abc     1
> 2       abc     2
> 3       abc     3


It's a prototype "feature"...
...
Version 3.4 Release 1 for Sun SPARC, SunOS 5.3 : 1996 
...
>  tablename <- "abc"
>  b <- as.data.frame(cbind(tablename, 1:3))
> b
  tablename   
1       abc 1
2       abc 2
3       abc 3
> b[,2]
Error in "[.data.frame"(b,  , 2): undefined columns selected
Dumped


This is a conspiracy of three things: 

1) The deparse.level feature of cbind (which is unsettable, but the
   internals still behave as if deparse.level=1) which causes a
   deparsing of simple arguments (i.e. symbols) into colnames, leaving
   others blank.

2) as.data.frame.matrix expects that if colnames are present, they can
   just be copied to the names() of the result

3) "[.data.frame" explicitly checks whether a column name is blank
   after subsetting, and protests if it is. 
-- 
   O__  ---- Peter Dalgaard             Blegdamsvej 3  
  c/ /'_ --- Dept. of Biostatistics     2200 Cph. N   
 (*) \(*) -- University of Copenhagen   Denmark      Ph: (+45) 35327918
~~~~~~~~~~ - (p.dalgaard@biostat.ku.dk)             FAX: (+45) 35327907
-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
r-devel mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !)  To: r-devel-request@stat.math.ethz.ch
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._