I would try this (although the ldply
solution may be faster).
library(xts)
A <- xts(read.zoo(data.frame(day=as.Date("2001-05-25") + 1:10, x=rnorm(10), y=rnorm(10))))
B <- xts(read.zoo(data.frame(day=as.Date("2001-05-25") + 1:10, x=rnorm(10), y=rnorm(10))))
C <- list(US=A, CAN=B)
D <- do.call(merge.zoo, C)
E <- data.frame(day=index(D), coredata(D))
reshape(E, direction="long", idvar="day", timevar="country", varying=2:ncol(E))
Yields:
> reshape(E, direction="long", idvar="day", timevar="country", varying=2:ncol(E))
day country x y
2001-05-26.US 2001-05-26 US -1.14792688 -0.70425857
2001-05-27.US 2001-05-27 US 0.42892010 -0.62678907
2001-05-28.US 2001-05-28 US 1.20302730 -0.88504965
2001-05-29.US 2001-05-29 US 0.14411623 0.62155740
2001-05-30.US 2001-05-30 US -0.30979083 -1.63573976
2001-05-31.US 2001-05-31 US -0.53765221 -0.94028377
2001-06-01.US 2001-06-01 US 0.21273968 0.39703515
2001-06-02.US 2001-06-02 US -0.45567642 0.28003478
2001-06-03.US 2001-06-03 US -0.52659903 -1.05184085
2001-06-04.US 2001-06-04 US 0.23540896 -1.52234888
2001-05-26.CAN 2001-05-26 CAN 0.27341723 -0.29382874
2001-05-27.CAN 2001-05-27 CAN 0.08398618 0.88950783
2001-05-28.CAN 2001-05-28 CAN 0.24333694 0.60005146
2001-05-29.CAN 2001-05-29 CAN 0.82480254 -0.77898367
2001-05-30.CAN 2001-05-30 CAN -0.18744699 -1.14777217
2001-05-31.CAN 2001-05-31 CAN 0.98918900 -0.04893292
2001-06-01.CAN 2001-06-01 CAN -0.27379800 -1.23558134
2001-06-02.CAN 2001-06-02 CAN -0.88556293 2.34522201
2001-06-03.CAN 2001-06-03 CAN -0.68985258 -0.37681843
2001-06-04.CAN 2001-06-04 CAN 0.11916878 -2.39336976