[R] Column renaming

Chip Barnaby cbarnaby at wrightsoft.com
Mon May 5 17:54:50 CEST 2008


Yes, someone else pointed out my typo, sorry.

My issue here is that referring to columns by 
index is risky.  Hard-coded indices will be 
buried in code and there will be trouble if 
(when) the data organization changes.  So I am 
trying to learn how to work with names, but the 
language does not seem to allow that approach 
without some awkwardness.  I guess I could write some helper functions.

Chip Barnaby


At 11:47 AM 5/5/2008, Peter Dalgaard wrote:
>Chip Barnaby wrote:
> > Peter,
> > My method seems to work, see below.  Is there some reason it might not
> > work in general?  This is the tersest way I have found to rename, but
> > it seems awkward, given that names( X) is repeated.
> >
>Nono, this technique works fine. It just wasn't what you wrote.... (look
>closer!)
>
>     -p
> > Chip Barnaby
> > --------------------------
> >
> > > head( airquality)
> >   Ozone Solar.R Wind Temp Month Day
> > 1    41     190  7.4   67     5   1
> > 2    36     118  8.0   72     5   2
> > 3    12     149 12.6   74     5   3
> > 4    18     313 11.5   62     5   4
> > 5    NA      NA 14.3   56     5   5
> > 6    28      NA 14.9   66     5   6
> > >
> > > names( airquality)[names( airquality)=="Ozone"]<-"O3"
> > > head( airquality)
> >   O3 Solar.R Wind Temp Month Day
> > 1 41     190  7.4   67     5   1
> > 2 36     118  8.0   72     5   2
> > 3 12     149 12.6   74     5   3
> > 4 18     313 11.5   62     5   4
> > 5 NA      NA 14.3   56     5   5
> > 6 28      NA 14.9   66     5   6
> > >
> >
> >
> > At 11:19 AM 5/5/2008, Peter Dalgaard wrote:
> >> Chip Barnaby wrote:
> >> > Dear all,
> >> >
> >> > Is there a less cumbersome way to rename a column by name (as opposed
> >> > to index) than --
> >> >
> >> > names( X)[ names[ X] == "bob"]<-"sue"
> >> >
> >> > ?
> >> Not that I know of (notwithstanding that your code doesn't quite work as
> >> it stands...). You might have thought that this would work, but it
> >> obviously does not:
> >>
> >> > names(airquality["Ozone"]) <- "O3"
> >> > head(airquality)
> >>   Ozone Solar.R Wind Temp Month Day
> >> 1    41     190  7.4   67     5   1
> >> 2    36     118  8.0   72     5   2
> >> 3    12     149 12.6   74     5   3
> >> 4    18     313 11.5   62     5   4
> >> 5    NA      NA 14.3   56     5   5
> >> 6    28      NA 14.9   66     5   6
> >>
> >> (This is probably a design decision. In the same vein,
> >>
> >> airquality[6] <- data.frame(foo=1:153)
> >>
> >> will not change the name of column 6. It might be preferable if it did,
> >> from the conceptual point of view, but it is one of those things where I
> >> suspect that the world comes tumbling down if you try to change the
> >> behaviour...)
> >>
> >> >
> >> > A semi-related question: how does one get the index of a column by
> >> > name, something along the lines of col.index( X, "sue") ?
> >> >
> >> match("sue", names(X))
> >>
> >> --
> >>    O__  ---- Peter Dalgaard             Øster Farimagsgade 5, Entr.B
> >>   c/ /'_ --- Dept. of Biostatistics     PO Box 2099, 1014 Cph. K
> >>  (*) \(*) -- University of Copenhagen   Denmark      Ph:  (+45) 35327918
> >> ~~~~~~~~~~ - (p.dalgaard at biostat.ku.dk)              FAX: (+45) 35327907
> >
> > ---------------------------------------------------------
> > Chip Barnaby                   cbarnaby at wrightsoft.com
> > Vice President of Research
> > Wrightsoft Corp.               781-862-8719 x118 voice
> > 131 Hartwell Ave               781-861-2058 fax
> > Lexington, MA 02421         www.wrightsoft.com
> > ---------------------------------------------------------
> >
> >
>
>
>--
>    O__  ---- Peter Dalgaard             Øster Farimagsgade 5, Entr.B
>   c/ /'_ --- Dept. of Biostatistics     PO Box 2099, 1014 Cph. K
>  (*) \(*) -- University of Copenhagen   Denmark      Ph:  (+45) 35327918
>~~~~~~~~~~ - (p.dalgaard at biostat.ku.dk)              FAX: (+45) 35327907

---------------------------------------------------------
Chip Barnaby                   cbarnaby at wrightsoft.com
Vice President of Research
Wrightsoft Corp.               781-862-8719 x118 voice
131 Hartwell Ave               781-861-2058 fax
Lexington, MA 02421         www.wrightsoft.com
--------------------------------------------------------- 



More information about the R-help mailing list