[R-SIG-Finance] row-by-row operations on multiple xts matrices

Joshua Ulrich josh.m.ulrich at gmail.com
Mon Nov 23 16:33:51 CET 2009


Murali,

Try:
> x <- a*b
> (y <- xts(rowSums(x),index(x)))
           [,1]
1970-01-03  134
1970-01-04  172
1970-01-05  214
1970-01-06  260

HTH,
Josh
--
http://www.fosstrading.com



On Mon, Nov 23, 2009 at 9:25 AM,  <Murali.MENON at fortisinvestments.com> wrote:
> Folks,
>
> If I have two xts objects with some dates in common, and I want to
> compute, say, the sum of products of their corresponding rows,
> what is a good way of achieving it?
>
>> a <- xts(matrix(1:10,ncol=2), as.Date(1:5))
>> b <- xts(matrix(11:20,ncol=2), as.Date(2:6))
>
> Were these matrices, I could just do something like (inefficiently):
>
>> diag(a %*% t(b))
>
> but that doesn't work here, because the transpose t() function removes
> the xts-ness of b, and the multiplication occurs row-by-row
> without date correspondence.
>
> Is there a better way to achieve this than:
>
> # First extract common indices
>> aa <- a[index(a) %in% index(b)]
>> bb <- b[index(b) %in% index(a)]
>
> # Then use the common index to construct a new xts object
>> xts(diag(aa %*% t(bb)), index(aa))
>
>           [,1]
> 1970-01-03  134
> 1970-01-04  172
> 1970-01-05  214
> 1970-01-06  260
>
> I think there's something obvious I'm missing...
>
> Thanks,
>
> Murali
>
> _______________________________________________
> R-SIG-Finance at stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/r-sig-finance
> -- Subscriber-posting only.
> -- If you want to post, subscribe first.
>



More information about the R-SIG-Finance mailing list