[R] cbind for list of zoo objects

Harry Mamaysky h.mamaysky at gmail.com
Tue Apr 9 14:31:57 CEST 2013


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:
> Can someone explain why this happens when one of the list elements is named 'all'?
> 
>> zz <- list( zoo(1:10,1:10), zoo(101:110,1:10), zoo(201:210,1:10) )
>> names(zz)<-c('test','bar','foo')
>> do.call(cbind,zz)
>   test bar foo
> 1     1 101 201
> 2     2 102 202
> 3     3 103 203
> 4     4 104 204
> 5     5 105 205
> 6     6 106 206
> 7     7 107 207
> 8     8 108 208
> 9     9 109 209
> 10   10 110 210
>> names(zz)<-c('test','all','foo')
>> do.call(cbind,zz)
>   test foo
> 1     1 201
> 2     2 202
> 3     3 203
> 4     4 204
> 5     5 205
> 6     6 206
> 7     7 207
> 8     8 208
> 9     9 209
> 10   10 210

all= is an argument to cbind.zoo so it cannot be used as a column name.

> args(zoo:::cbind.zoo)
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



More information about the R-help mailing list