Hi. The following results in a data.frame with column names starting with "A.":
> X <- data.frame(x=1:2, y=1:2) > X x y 1 1 1 2 2 2 > data.frame(A=X) A.x A.y 1 1 1 2 2 2 whereas with a single-column matrix you won't get "A.": > Y <- X[,1,drop=FALSE]; > Y x 1 1 2 2 > data.frame(A=Y); x 1 1 2 2 I'd like to obtain column name "A.x" in the latter case too. Note that Y is still a matrix. What I am really looking for is a way to automatically prefix data frame names, e.g: > data.frame(A=Y, B=Y); # wish A.x B.x 1 1 1 2 2 2 analogously to: > data.frame(A=X, B=X); A.x A.y B.x B.y 1 1 1 1 1 2 2 2 2 2 instead of as now: > data.frame(A=Y, B=Y); x x.1 1 1 1 2 2 2 Looking at the code for data.frame(), I find: if (ncols[i] > 1L) { if (length(namesi) == 0L) namesi <- seq_len(ncols[i]) if (no.vn[i]) vnames[[i]] <- namesi else vnames[[i]] <- paste(vnames[[i]], namesi, sep = ".") } else { ... } I guess that (ncols[i] > 1L) test causes data.frame() to treat the one-column case specially, and replacing it with (ncols[i] > 0L) would create "A.x". Acknowledging that data.frame() has legacy, is there any possibility for updating this behavior? Note that the current output is still obtained if leaving out "A", i.e. > data.frame(Y); x 1 1 2 2 /Henrik ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel