我有2个列表,其组件是xts对象(co和oc).我想生成另一个具有oc/co结果的列表对象.
> length(co)
[1] 1064
> length(oc)
[1] 1064
> tail(co[[1]])
[,1]
2011-12-22 0.3018297
2011-12-23 0.2987450
2011-12-27 0.2699710
2011-12-28 0.2706428
2011-12-29 0.2098897
2011-12-30 0.2089051
> tail(oc[[1]])
[,1]
2011-12-22 0.6426411
2011-12-23 0.6462834
2011-12-27 0.6466680
2011-12-28 0.6741420
2011-12-29 0.6781371
2011-12-30 0.6650130
> co / oc
Error in co/oc : non-numeric argument to binary operator
Run Code Online (Sandbox Code Playgroud)
如果我指定列表的索引,则操作成功如下:
> tail(co[[1]] / oc[[1]])
[,1]
2011-12-22 0.4696707
2011-12-23 0.4622507
2011-12-27 0.4174800
2011-12-28 0.4014627
2011-12-29 0.3095093
2011-12-30 0.3141369
Run Code Online (Sandbox Code Playgroud)
我想这样做而不编写循环来迭代两个列表的每个组件(总共1064个组件).
任何帮助将不胜感激.谢谢.
这样的事情可能有用:
mapply("/",co,oc,SIMPLIFY = FALSE)
Run Code Online (Sandbox Code Playgroud)
虽然可能有无数种方法可以做到这一点,但大多数都是等价的.
这是使用xts包中的一些示例数据的最小示例:
data(sample_matrix)
sample.xts <- as.xts(sample_matrix, descr='my new xts object')
v1 <- list(a = sample.xts[,1],b = sample.xts[,2])
v2 <- list(a = sample.xts[,3],b = sample.xts[,4])
mapply("/",v1,v2,SIMPLIFY = FALSE)
Run Code Online (Sandbox Code Playgroud)