I'm trying to merge zoo classes within a loop, accumulating zoo series as new 'columns' with each iteration. I initialize an empty zoo() prior to running the loop. After my code completes, I get 'zoo series without observations' when I call str() on it. Yet, when I experiment with initializing an empty zoo, then merging it with itself and another instance with data, it works fine. The zoo in question below is 'monthlyReturns' in the 2nd loop. Btw I do know I'd be better served using the apply family. That will be next. What am I doing wrong?
library(tseries)
library(zoo)
symbs = c('XLF', 'XLE', 'XLU', 'SPY')
importData = vector('list', length(symbs))
cumInvestmentReturns = zoo()
monthlyReturns = zoo()
#Get monthly pricing data.
for (sIdx in 1:length(symbs)){
    #Import the data for each symbol into the list.
    importData[sIdx] = get.hist.quote(instrument= symbs[sIdx], start="2000-01-01", end="2013-07-15", 
          quote="AdjClose", provider="yahoo", origin="1970-01-01", compression="m", retclass="zoo")
    names(importData[sIdx]) = symbs[sIdx]
}
#Loop over length of lookback months (1-12) to check for performance of best etf in past period.
for (numbOfMonths in 1:12){
    #Calculate performances on each symbol, using the lookback length of variable numbOfMonths.
    monthlyPctChgs = lapply(importData, function(x) diff(x, lag =numbOfMonths) / lag(x, k=-numbOfMonths))
    names(monthlyPctChgs) = symbs
    #combine all ticker time series into one time series.
    tsPctChgs = merge(monthlyPctChgs[[1]], monthlyPctChgs[[2]], monthlyPctChgs[[3]], monthlyPctChgs[[4]], 
          monthlyPctChgs[[5]], monthlyPctChgs[[6]], monthlyPctChgs[[7]], monthlyPctChgs[[8]], 
          monthlyPctChgs[[9]], monthlyPctChgs[[10]], monthlyPctChgs[[11]], monthlyPctChgs[[12]])
    names(tsPctChgs) = symbs
    curBestLagPerfs <- rollapplyr(tsPctChgs, 2, function(x) x[2,which.max(x[1,])], by.column=FALSE)
    monthlyReturns = merge(monthlyReturns, curBestLagPerfs)
    #finalSet = finalSet[2:length(finalSet$SPY),] #Remove first value, since there is an na.
    lookbackReturns = cumprod(1+curBestLag) * 10000
    cumInvestmentReturns = merge(cumInvestmentReturns, lookbackReturns)
    #names(investmentsPaired) = c('SPY', 'ETFRotation')
}
 
     
     
    