From fgnu32 at yahoo.com  Tue Jul 23 19:46:53 2013
From: fgnu32 at yahoo.com (Fg Nu)
Date: Tue, 23 Jul 2013 10:46:53 -0700 (PDT)
Subject: [Rd] cbind error with check.names
In-Reply-To: <CA+vqiLHmAC2n-5kUTS+J09O8BzEvikLEyK+v2i3Kv3ffGGn2KA@mail.gmail.com>
References: <1374585525.97733.YahooMailNeo@web160105.mail.bf1.yahoo.com>
	<CA+vqiLGkncU6QZm0CqBs+PbbXzFuGnzWvOOfrVqN9mUc4kttpQ@mail.gmail.com>
	<1374598453.74044.YahooMailNeo@web160105.mail.bf1.yahoo.com>
	<CA+vqiLHmAC2n-5kUTS+J09O8BzEvikLEyK+v2i3Kv3ffGGn2KA@mail.gmail.com>
Message-ID: <1374601613.65858.YahooMailNeo@web160104.mail.bf1.yahoo.com>





----- Original Message -----
From: Ista Zahn <istazahn at gmail.com>
To: Fg Nu <fgnu32 at yahoo.com>
Cc: "r-devel at r-project.org" <r-devel at r-project.org>
Sent: Tuesday, July 23, 2013 11:05 PM
Subject: Re: [Rd] cbind error with check.names

On Tue, Jul 23, 2013 at 12:54 PM, Fg Nu <fgnu32 at yahoo.com> wrote:
>
>
>
> ----- Original Message -----
> From: Ista Zahn <istazahn at gmail.com>
> To: Fg Nu <fgnu32 at yahoo.com>
> Cc: "r-devel at r-project.org" <r-devel at r-project.org>
> Sent: Tuesday, July 23, 2013 9:50 PM
> Subject: Re: [Rd] cbind error with check.names
>
> On Tue, Jul 23, 2013 at 9:18 AM, Fg Nu <fgnu32 at yahoo.com> wrote:
>>
>>
>>
>> Here is an example where cbind fails with an error when check.names=TRUE is set.
>>
>> data(airquality)
>> airQualityBind =cbind(airquality,airquality,check.names =TRUE)
>>
>>
>>? I understand that cbind is a call to data.frame and the following works:
>> airQualityBind =data.frame(airquality,airquality,check.names =TRUE)
>> but I would like to understand why cbind throws an error.
>>
>> I asked this question on SO here:
>> http://stackoverflow.com/questions/17810470/cbind-error-with-check-names
>> and user Hong Ooi confirmed my suspicion that cbind was passing check.names = FALSE regardless of my setting that option, even though the help file indicates that this should be possible,
>>
>> "For the "data.frame" method of cbind these can be further arguments to data.frame such as stringsAsFactors."
>>
>> Is there some design principle that I am missing here?
>
>
> Well, the function does work as documented. See the help file section
> on "Data frame methods", which says "The 'cbind' data frame method is
> just a wrapper for 'data.frame(..., check.names = FALSE)'".
>
> Best,
> Ista
>
>
>
> Is there then a reason that overriding the check.names default is forbidden from cbind? I can't tell why this would be the case.

For the same reason you can't have

data.frame(x=1:10, x=11:20, check.names=TRUE, check.names=FALSE)

or

mean(x=1:10, x=11:20)

i.e, you can't generally pass the same argument more than once. There
are exceptions to this, e.g.,

sum(c(NA, 1:10), na.rm=TRUE, na.rm=FALSE)

but in general each argument can only be matched once. Since
cbind.data.frame calls data.frame with check.names=FALSE, you can't
supply it again.

Best,
Ista

>
> Thanks
>


Yikes, no. As I mentioned to the SO poster, I get that bit.

I meant what is the design principle behind check.names being hardcoded to FALSE. I see no conflict with the purpose of cbind from the ability to specify check.names at the level of cbind.



[Rd] cbind error with check.names
Fg Nu