[Rd] cbind error with check.names
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? Thanks. __ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel
Re: [Rd] cbind error with check.names
On Tue, Jul 23, 2013 at 9:18 AM, Fg Nu 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 > > > Thanks. > > __ > R-devel@r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-devel __ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel
Re: [Rd] cbind error with check.names
On Tue, Jul 23, 2013 at 12:54 PM, Fg Nu wrote: > > > > - Original Message - > From: Ista Zahn > To: Fg Nu > Cc: "r-devel@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 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 > __ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel