library(xts)
set.seed(1)
x = xts( cbind(a=1:10,b=20:11) , Sys.Date()+1:10 )
y = xts( runif(10) , Sys.Date()+1:10 )
z = x*y
在 (x, y) 中给我错误*.default
:不一致的数组
我想要的是将 x 中的每一列乘以 y 中的值。
预期结果:
a b
2012-08-04 0.2655087 5.310173
2012-08-05 0.7442478 7.070354
2012-08-06 1.7185601 10.311361
2012-08-07 3.6328312 15.439532
2012-08-08 1.0084097 3.226911
2012-08-09 5.3903381 13.475845
2012-08-10 6.6127269 13.225454
2012-08-11 5.2863823 8.590371
2012-08-12 5.6620264 7.549369
2012-08-13 0.6178627 0.679649
理想情况下,解决方案应该在index(x)!=index(y)
旁白:我想出了这个技巧:
z = xts( apply(x,2,function(col) col*y ) , index(x) )
它适用于测试数据,但在我的真实数据上它抱怨错误数组(ans,c(len.a%/%d2,d.ans),if(!all(vapply(dn.ans,is.null) , : 'dimnames' [1] 的长度不等于数组范围 (我还没有设法在一小段测试数据中重现这一点。)
Joshua 和 DWin 的答案不存在这个问题,因此不仅在简洁性上而且在结果质量上都非常出色!