On 2/6/19 12:27 PM, Jeff Newmiller wrote:

I have no idea about "why it is this way" but there are many cases
where I would rather have to use backticks around
syntactically-invalid names than deal with arbitrary rules for
mapping column names as they were supplied to column names as R wants
them to be. From that perspective, making the conversion function
leave the names alone and limit the name-mashing to one function
sounds great to me. You can always call make.names yourself.

Fair enough. My real problem was getting ambushed by the fact that *different* names arise depending on whether one uses data.frame(X)
or as.data.frame(X).  I'll spare you the details. :-)

cheers,

Rolf


On February 5, 2019 2:22:24 PM PST, Rolf Turner
<r.tur...@auckland.ac.nz> wrote:

Consider the following:

set.seed(42) X <- matrix(runif(40),10,4) colnames(X) <-
c("a","b","a:x","b:x") # Imitating the output # of model.matrix(). D1 <- as.data.frame(X) D2 <- data.frame(X) names(D1) [1] "a" "b"
"a:x" "b:x" names(D2) [1] "a"   "b"   "a.x" "b.x"

The names of D2 are syntactically valid; those of D1 are not.

Why should I have expected this phenomenon? :-)

The as.data.frame() syntax seems to me much more natural for
converting

a matrix to a data frame, yet it doesn't get it quite right,
sometimes, in respect of the names.

Is there some reason that as.data.frame() does not apply
make.names()? Or was this just an oversight?

______________________________________________
R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to