[R] data.frame() versus as.data.frame() applied to a matrix.
r@turner @end|ng |rom @uck|@nd@@c@nz
Wed Feb 6 00:52:46 CET 2019
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. :-)
> On February 5, 2019 2:22:24 PM PST, Rolf Turner
> <r.turner using 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)  "a" "b"
>> "a:x" "b:x" names(D2)  "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
>> 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?
More information about the R-help