[R] column names in matrix vs. data frame in R 1.8
Douglas Bates
bates at stat.wisc.edu
Sat Feb 7 01:21:53 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.
More information about the R-help
mailing list