[R] Merging "list" object

Ron_M ron_michael70 at yahoo.com
Tue Apr 13 10:19:26 CEST 2010


Hi, I have created following "list" object :

> library(zoo)
> dat <- vector("list")
> for (i in 1:4) dat[[i]] <- zooreg(rnorm(i*10),
> start=as.Date("2000-01-01"), frequency=1)

> dat[[1]]
2000-01-01 2000-01-02 2000-01-03 2000-01-04 2000-01-05 2000-01-06 2000-01-07
2000-01-08 2000-01-09 2000-01-10 
-0.7023352 -0.2063284 -1.0684688 -0.5345360  1.0045435 -0.6528107  1.0922850 
0.6592155  0.1889817 -0.5154872 
> dat[[2]]
 2000-01-01  2000-01-02  2000-01-03  2000-01-04  2000-01-05  2000-01-06 
2000-01-07  2000-01-08  2000-01-09  2000-01-10 
-1.33096001 -0.41484364  0.03850233 -0.78752649  1.50566685 -1.05094523 
0.58845956  0.28183515  0.90528437 -0.61535069 
 2000-01-11  2000-01-12  2000-01-13  2000-01-14  2000-01-15  2000-01-16 
2000-01-17  2000-01-18  2000-01-19  2000-01-20 
-0.76326498 -0.38750503  0.59519399 -0.39464736  0.80053668  0.56286659 
0.03991622  1.20224474 -0.11436020  0.79030262 
> dat[[3]]
  2000-01-01   2000-01-02   2000-01-03   2000-01-04   2000-01-05  
2000-01-06   2000-01-07   2000-01-08   2000-01-09 
-0.939523920  0.679475552 -0.248264399  0.658726986 -0.154457503
-0.327342956  1.358551653 -0.051436045  0.455469878 
  2000-01-10   2000-01-11   2000-01-12   2000-01-13   2000-01-14  
2000-01-15   2000-01-16   2000-01-17   2000-01-18 
 2.982439031  0.499840045  0.009528193  0.372458627 -0.762186202
-0.988996299 -0.673831659 -0.443536816  0.413445687 
  2000-01-19   2000-01-20   2000-01-21   2000-01-22   2000-01-23  
2000-01-24   2000-01-25   2000-01-26   2000-01-27 
-0.069849302  0.520691745 -0.296890679  2.093093754  0.696635791
-0.286680977 -0.354431757 -0.157794595 -2.247776154 
  2000-01-28   2000-01-29   2000-01-30 
-1.429291735 -0.302251311  0.071380311 
> dat[[4]]
  2000-01-01   2000-01-02   2000-01-03   2000-01-04   2000-01-05  
2000-01-06   2000-01-07   2000-01-08   2000-01-09 
 1.229357467 -1.231028063 -0.384540478  1.058490237 -0.275243948 
0.097183122 -1.768885144 -0.611407839 -3.441311777 
  2000-01-10   2000-01-11   2000-01-12   2000-01-13   2000-01-14  
2000-01-15   2000-01-16   2000-01-17   2000-01-18 
-0.312644935  0.380036670  0.025232772 -0.090080369 -1.157750720 
0.859936199  0.590191927 -0.824260485 -1.570709392 
  2000-01-19   2000-01-20   2000-01-21   2000-01-22   2000-01-23  
2000-01-24   2000-01-25   2000-01-26   2000-01-27 
-1.356200595 -0.163619627  1.680948233  2.045026560  1.756296234
-1.422084889 -0.075294543  1.986966298  0.171919466 
  2000-01-28   2000-01-29   2000-01-30   2000-01-31   2000-02-01  
2000-02-02   2000-02-03   2000-02-04   2000-02-05 
 0.474975000 -1.226787467  0.508195208 -1.237140935  0.361799136 
0.497959878 -0.857453525  2.833531013  0.396793937 
  2000-02-06   2000-02-07   2000-02-08   2000-02-09 
-0.966378375  0.556724596  0.170147308 -0.005016784 


Now I want to merge all these 4 time series with "all=FALSE". I have tried
with Reduce() function, However could not get desired result :

> tail(Reduce("merge", dat))
           init x[[i]] x[[i]].1     x[[i]].2
2000-02-04   NA     NA       NA  2.833531013
2000-02-05   NA     NA       NA  0.396793937
2000-02-06   NA     NA       NA -0.966378375
2000-02-07   NA     NA       NA  0.556724596
2000-02-08   NA     NA       NA  0.170147308
2000-02-09   NA     NA       NA -0.005016784


If I all additinal argument for merge() function I get error :

> tail(Reduce("merge", all=F, dat))
Error in Reduce("merge", all = F, dat) : unused argument(s) (all = F)

How to force R to report the data available only for all days?

Thanks,
-- 
View this message in context: http://n4.nabble.com/Merging-list-object-tp1838111p1838111.html
Sent from the R help mailing list archive at Nabble.com.



More information about the R-help mailing list