From maechler at r-project.org  Tue Dec  5 18:20:12 2006
From: maechler at r-project.org (Martin Maechler)
Date: Tue, 5 Dec 2006 17:20:12 +0000 (UTC)
Subject: [Rd] R-devel: rownames of a data.frame
References: <4508EE12.7030004@bfro.uni-lj.si>
Message-ID: <loom.20061205T100716-59@post.gmane.org>

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.



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