list - R 划分 2 个列表对象,每个列表对象都包含相同大小的 xts 对象

标签 list r xts

我有 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

如果我指定列表的索引操作成功如下:
> 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

我想在不编写循环来遍历两个列表的每个组件(总共 1064 个组件)的情况下执行此操作。

任何帮助将不胜感激。谢谢你。

最佳答案

像这样的事情可能会奏效:

mapply("/",co,oc,SIMPLIFY = FALSE)

尽管可能有无数种方法可以做到这一点,但它们大多是等效的。

这是一个使用来自 的一些示例数据的最小示例。 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)

更新:
我们现在可以使用 Map这基本上是 mapply(..., simplify = FALSE)默认情况下。
Map("/",co,oc)

关于list - R 划分 2 个列表对象,每个列表对象都包含相同大小的 xts 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8706978/

相关文章:

r - 文本未出现在 XTS 图上

r - 规范化数据帧 - 错误 : non-numeric argument to binary - R

python - 在 python 中解决 Equi 任务

c# - 将项目添加到字典中的列表

r - R 数据框中的十个最高列值

r - 将价格数据聚合到 R data.table 中的不同时间范围

python - 将 JSON 对象添加到列表中

r - 将多个变量传递给 ggtitle R

r - 使用 tryCatch 通过网页抓取进行错误处理

r - 在 quantmod 中更新历史价格