[R] column names in matrix vs. data frame in R 1.8

White.Denis@epamail.epa.gov White.Denis at epamail.epa.gov
Mon Feb 9 18:27:58 CET 2004





> White.Denis at epamail.epa.gov writes:
>
> > Is the difference in behavior below, introduced in 1.8, inconsistent
or,
> > at least, undesirable?  I couldn't find this in the NEWS.
> >
> > On the one hand,
> >
> > > a <- matrix (1:4, nrow=2)
> > > a <- data.frame (a)
> > > names (a) <- c("break","next")
> > > names (a)
> > [1] "break" "next"
> >
> > On the other,
> >
> > > a <- matrix (1:4, nrow=2)
> > > dimnames(a) <- list (1:2, c("break","next"))
> > > a <- data.frame (a)
> > > names(a)
> > [1] "break." "next."
>
> Works fine if you don't use keywords as column names
>
> > a <- matrix (1:4, nrow=2)
> > dimnames(a) <- list (1:2, c("foo","bar"))
> > b <- data.frame(a)
> > names(b)
> [1] "foo" "bar"
>
> The difference in the result for your example has to do with an extra
> step in the second case to obtain a legitimate name that can be used
> with the $ operator.  R generates a syntax error for
>
> a$break
>
> but not for
>
> a$break.

Ok, I'll regard it as an inconsistency that the conversion of dimnames
to data frame column names changes reserved words to legitimate names
but direct assignment doesn't.




More information about the R-help mailing list