[R] cbind for list of zoo objects

Joshua Ulrich josh.m.ulrich at gmail.com
Tue Apr 9 15:07:06 CEST 2013


On Tue, Apr 9, 2013 at 7:31 AM, Harry Mamaysky <h.mamaysky at gmail.com> wrote:
> 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?
>
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?

>
> 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
>

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

R/Finance 2013: Applied Finance with R  | www.RinFinance.com



More information about the R-help mailing list