[R] [FORGED] same column name in a data frame

peter dalgaard pdalgd at gmail.com
Tue Mar 14 14:42:39 CET 2017


> On 14 Mar 2017, at 03:43 , Rolf Turner <r.turner at auckland.ac.nz> wrote:
> 
> On 14/03/17 14:56, Jinsong Zhao wrote:
>> Hi there,
>> 
>> I happened to find the following code can generate a data frame with
>> same column name.
>> 
>>> x <- data.frame(a=c(1,2,3))
>>> y <- data.frame(a=c(2,3,4))
>>> z <- cbind(x,y)
>> 
>> However, in this case, one can not use the $ to extract the second
>> column, right?
>> 
>> Is it possible to prevent the cbind() produce a data frame with same
>> column name?
> 
> No.
> 
> Why not either:
> 
> (a) Just make sure the names in "x" and "y" differ?
> 
> Or:
> 
> (b) Change the names of "z", e.g. names(z) <- c("clyde","irving")?
> 
> Or maybe names(z) <- make.unique(names(z)).
> 
> You could probably write a wrapper function for cbind() to automate (b) if you really want to.
> 

Yes, this is what it is, and I doubt anyone is likely to set out to change it. 

However, it is a bit of an oddity compared to the (often undesirable) pains the data.frame code goes through to ensure distinct _row_ names; e.g.,

> cbind(data.frame(a=1), data.frame(a=2))
  a a
1 1 2

but 

> rbind(data.frame(a=c(foo=1)), data.frame(a=c(foo=2)))
     a
foo  1
foo1 2

-pr


-- 
Peter Dalgaard, Professor,
Center for Statistics, Copenhagen Business School
Solbjerg Plads 3, 2000 Frederiksberg, Denmark
Phone: (+45)38153501
Office: A 4.23
Email: pd.mes at cbs.dk  Priv: PDalgd at gmail.com



More information about the R-help mailing list