[Rd] R-devel: rownames of a data.frame

Martin Maechler maechler at r-project.org
Tue Dec 5 18:20:12 CET 2006


Gregor Gorjanc <gregor.gorjanc <at> bfro.uni-lj.si> writes:

> 
> Hello!
> 
> Data.frames have new rownames funcionality, however in use of colnames<-
> in R-devel "changes" this. Here is the example:
> 
> > df1 <- data.frame(letters[1:5])
> > attributes(df1)
> $names
> [1] "letters.1.5."
> 
> $row.names
> [1] 1 2 3 4 5
> 
> $class
> [1] "data.frame"
> 
> > colnames(df1) <- "bla"
> > attributes(df1)
> $names
> [1] "bla"
> 
> $row.names
> [1] "1" "2" "3" "4" "5"
> 
> $class
> [1] "data.frame"
> 
> ?rownames/colnames help page (R-devel) says that value is coerced to
> character, but why are rownames coerced to character if I assign
> colnames to a data.frame?
> 

because  colnames() and rownames() work via dimnames(), and so do
 "colnames<-" and "rownames<-" ---  
I think it would be unwise to change this, since it's well documented property
of these functions.

As you noted yourself,  using  names() and "names<-"
i.e.,
  names(df1) <- "bla"
in the example above, is the recommended way for data frames and does not change
the rownames to character.



More information about the R-devel mailing list