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? -- Lep pozdrav / With regards, Gregor Gorjanc ---------------------------------------------------------------------- University of Ljubljana PhD student Biotechnical Faculty Zootechnical Department URI: http://www.bfro.uni-lj.si/MR/ggorjan Groblje 3 mail: gregor.gorjanc <at> bfro.uni-lj.si SI-1230 Domzale tel: +386 (0)1 72 17 861 Slovenia, Europe fax: +386 (0)1 72 17 888 ---------------------------------------------------------------------- "One must learn by doing the thing; for though you think you know it, you have no certainty until you try." Sophocles ~ 450 B.C.
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.