That does seem odd although I gather from the other answers that it is intended. Note that we can avoid this by simply not naming the arguments in the first place.
> data.frame(data.frame(A = 1), data.frame(B = 1)) A B 1 1 1 > data.frame(data.frame(A = 1, C = 1), data.frame(B = 1, D = 1)) A C B D 1 1 1 1 1 On Fri, Aug 21, 2026 at 12:01 PM Peter Langfelder <[email protected]> wrote: > > Hi all, > > when calling data.frame on other data frames and naming arguments, the > way the 'names' of the result are formed seems to depend on whether > the argument data frames have one or more columns. Specifically, > consider this: > > > data.frame(a = data.frame(A = 1), b = data.frame(B = 1)) > A B > 1 1 1 > > > Here the column names are simply copied from column names of the arguments. > In contrast, if the argument data frames have two (or more) columns, > here's what happens: > > > data.frame(a = data.frame(A = 1, C = 1), b = data.frame(B = 1, D = 1)) > a.A a.C b.B b.D > 1 1 1 1 1 > > > The 'names' of the result are now <name of the argument>.<column name > of the argument value> > > Is this behavior intended? > > Thanks, > > Peter -- Statistics & Software Consulting GKX Group, GKX Associates Inc. tel: 1-877-GKX-GROUP email: ggrothendieck at gmail.com ______________________________________________ [email protected] mailing list -- To UNSUBSCRIBE and more, see https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide https://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.

