[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