[R] Inconsistency in 'names' when calling data.frame on other data.frames

Gabor Grothendieck ggrothend|eck @end|ng |rom gm@||@com
Sat Aug 22 13:22:27 CEST 2026


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
<peter.langfelder using gmail.com> 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



More information about the R-help mailing list