Skip to content

cbind for list of zoo objects

8 messages · Gabor Grothendieck, Joshua Ulrich, Harry Mamaysky

#
Because 'all' is the name of one of the arguments to cbind.zoo:

R> args(cbind.zoo)
function (..., all = TRUE, fill = NA, suffixes = NULL, drop = FALSE)
NULL

do.call constructs a call somewhat like:
R> cbind(test=zz$test, all=zz$all, foo=zz$foo)

The same thing would happen for list elements named 'fill',
'suffixes', or 'drop'.

Best,
--
Joshua Ulrich  |  about.me/joshuaulrich
FOSS Trading  |  www.fosstrading.com

R/Finance 2013: Applied Finance with R  | www.RinFinance.com
On Mon, Apr 8, 2013 at 2:54 PM, Harry Mamaysky <h.mamaysky at gmail.com> wrote:
#
On Mon, Apr 8, 2013 at 3:54 PM, Harry Mamaysky <h.mamaysky at gmail.com> wrote:
all= is an argument to cbind.zoo so it cannot be used as a column name.
function (..., all = TRUE, fill = NA, suffixes = NULL, drop = FALSE)
NULL

--
Statistics & Software Consulting
GKX Group, GKX Associates Inc.
tel: 1-877-GKX-GROUP
email: ggrothendieck at gmail.com
#
Thanks for the explanations. 

Wouldn't the following bit of checking in do.call() make it easier to figure such things out in the future?


my.call <- function(what,args,...) {
 
  ##  Get the name of the function to call.
  if (!is.character(what))
      whatStr <- deparse(substitute(what))
  else
      whatStr <- what
 
  callFctn <- paste0(gsub(paste0('.',class(args[[1]])),'',whatStr), '.', class(args[[1]]))
 
  ##  Check whether list names are arguments to the function.
  if ( any( names(args) %in% names(formals(callFctn)) ) )
      warning( 'Element of "args" is also an argument for ', callFctn, '.' )
 
  ##  Do the actual call.
  do.call( what, args, ... )
}

Sent from my iPhone
On Apr 8, 2013, at 7:23 PM, Gabor Grothendieck <ggrothendieck at gmail.com> wrote:

        
On Mon, Apr 8, 2013 at 3:54 PM, Harry Mamaysky <h.mamaysky at gmail.com> wrote:
all= is an argument to cbind.zoo so it cannot be used as a column name.
function (..., all = TRUE, fill = NA, suffixes = NULL, drop = FALSE)
NULL

--
Statistics & Software Consulting
GKX Group, GKX Associates Inc.
tel: 1-877-GKX-GROUP
email: ggrothendieck at gmail.com
#
On Tue, Apr 9, 2013 at 7:31 AM, Harry Mamaysky <h.mamaysky at gmail.com> wrote:
Sure, it would have helped you figure out your issue, but you don't
want a *warning* when you purposefully try to set named function
arguments.  I.e., what if you want to set a function argument to
something other than its default value?  Do you really want a warning
when you do that?
--
Joshua Ulrich  |  about.me/joshuaulrich
FOSS Trading  |  www.fosstrading.com

R/Finance 2013: Applied Finance with R  | www.RinFinance.com
#
That's true. So perhaps there should be a flag that turns on this error checking. Often "args" is just a list that gets generated automatically and you don't know what all of its elements are. It just leads to a bit of non-deterministic behavior. It would be useful to have the option of flagging when one of those list elements (inadvertently) has the same name as an argument of "what". 

Sent from my iPhone
On Apr 9, 2013, at 9:07 AM, Joshua Ulrich <josh.m.ulrich at gmail.com> wrote:

        
On Tue, Apr 9, 2013 at 7:31 AM, Harry Mamaysky <h.mamaysky at gmail.com> wrote:
Sure, it would have helped you figure out your issue, but you don't
want a *warning* when you purposefully try to set named function
arguments.  I.e., what if you want to set a function argument to
something other than its default value?  Do you really want a warning
when you do that?
--
Joshua Ulrich  |  about.me/joshuaulrich
FOSS Trading  |  www.fosstrading.com

R/Finance 2013: Applied Finance with R  | www.RinFinance.com
#
On Tue, Apr 9, 2013 at 9:15 AM, Harry Mamaysky <h.mamaysky at gmail.com> wrote:
You can force an error by specifying all the default arguments.  Using
the version of zz with an all component it will encounter all= twice:
Error in cbind(deparse.level, ...) :
  formal argument "all" matched by multiple actual arguments

or more compactly:
Error in cbind(deparse.level, ...) :
  formal argument "all" matched by multiple actual arguments


--
Statistics & Software Consulting
GKX Group, GKX Associates Inc.
tel: 1-877-GKX-GROUP
email: ggrothendieck at gmail.com
#
That's a nice solution. Thanks. 

Sent from my iPhone
On Apr 9, 2013, at 10:00 AM, Gabor Grothendieck <ggrothendieck at gmail.com> wrote:

        
On Tue, Apr 9, 2013 at 9:15 AM, Harry Mamaysky <h.mamaysky at gmail.com> wrote:
You can force an error by specifying all the default arguments.  Using
the version of zz with an all component it will encounter all= twice:
Error in cbind(deparse.level, ...) :
 formal argument "all" matched by multiple actual arguments

or more compactly:
Error in cbind(deparse.level, ...) :
 formal argument "all" matched by multiple actual arguments


--
Statistics & Software Consulting
GKX Group, GKX Associates Inc.
tel: 1-877-GKX-GROUP
email: ggrothendieck at gmail.com