[Rd] as.data.frame.character lacks nm= argument

William Dunlap wdunlap at tibco.com
Fri Sep 14 16:43:15 CEST 2012


Thanks Brian,

I am not sure why the user who ran into this problem was using
   as.data.frame(theColumn, nm=theName)
but it may have been an attempt to make a data.frame with a
variable for a column name, which is a pain when calling data.frame.

It also is faster, but I doubt that was the reason:
  > system.time(for(i in 1:1e4)data.frame(x=log(seq_len(100))))
     user  system elapsed 
     1.06    0.00    1.06 
  > system.time(for(i in 1:1e4)as.data.frame(log(seq_len(100))))
     user  system elapsed 
     0.62    0.00    0.63 
  > system.time(for(i in 1:1e4)as.data.frame(log(seq_len(100)), nm="x"))
     user  system elapsed 
     0.17    0.00    0.17  

Bill Dunlap
Spotfire, TIBCO Software
wdunlap tibco.com


> -----Original Message-----
> From: Prof Brian Ripley [mailto:ripley at stats.ox.ac.uk]
> Sent: Friday, September 14, 2012 6:25 AM
> To: Bert Gunter
> Cc: William Dunlap; r-devel at r-project.org
> Subject: Re: [Rd] as.data.frame.character lacks nm= argument
> 
> On 13/09/2012 21:48, Bert Gunter wrote:
> > Bill:
> >
> > as.data.frame.character() has no nm, argument, so providing one causes
> > the error as you can see from the code. Presumably, this is what you
> > meant by bug/inconsistency, right?
> 
> This is using an undocumented argument, 'nm'.  I don't believe anything
> is said about what might happen if you do that except that it will be
> passed to methods -- they are not obliged to accept it.
> 
> If it were intended for this to be a feature, I think the author might
> have chosen a less opaque name than 'nm'.
> 
> Where we go from here is under discussion in R-core.
> 
> >
> > -- Bert
> >
> > On Thu, Sep 13, 2012 at 1:32 PM, William Dunlap <wdunlap at tibco.com> wrote:
> >> Is the following behavior with as.data.frame(nm=...) a bug?  It is an inconsistency:
> >>
> >>> as.data.frame(LETTERS[1:10], nm="FirstTenLetters")
> >> Error in as.data.frame.vector(x, ..., nm = nm) :
> >>    formal argument "nm" matched by multiple actual arguments
> >>
> >> nm= works for integer arguments:
> >>
> >>> as.data.frame(1:10, nm="OneToTen")
> >>     OneToTen
> >> 1         1
> >> 2         2
> >> 3         3
> >> 4         4
> >> 5         5
> >> 6         6
> >> 7         7
> >> 8         8
> >> 9         9
> >> 10       10
> >>
> >> Bill Dunlap
> >> Spotfire, TIBCO Software
> >> wdunlap tibco.com
> >>
> >> ______________________________________________
> >> R-devel at r-project.org mailing list
> >> https://stat.ethz.ch/mailman/listinfo/r-devel
> >
> >
> >
> 
> 
> --
> Brian D. Ripley,                  ripley at stats.ox.ac.uk
> Professor of Applied Statistics,  http://www.stats.ox.ac.uk/~ripley/
> University of Oxford,             Tel:  +44 1865 272861 (self)
> 1 South Parks Road,                     +44 1865 272866 (PA)
> Oxford OX1 3TG, UK                Fax:  +44 1865 272595



More information about the R-devel mailing list