【发布时间】:2019-12-31 12:10:29
【问题描述】:
我必须在 R 中使用两个 XTS 对象,一个大对象 A 和一个单列对象 B,其结构如下:
| Object A | V1 | V2 | ... | Object B | V1 |
--------------------------- -----------------
|2016-01-01| 1 | 6 | ... |2016-01-01| 4 |
|2016-01-02| 2 | 7 | ... |2016-01-02| 8 |
|2016-01-03| 3 | 8 | ... |2016-01-03|10 |
|2016-01-04| 4 | 9 | ... |2016-01-04|-3 |
|2016-01-05| 5 | 10 | ... |2016-01-05| 6 |
| ... | .. | .. | ... | ... | .. |
我想从A 的任意列中减去B 的值,得到:
| Object C | V1 | V2 | ...
---------------------------
|2016-01-01|-3 | 2 | ...
|2016-01-02|-6 |-1 | ...
|2016-01-03|-7 |-2 | ...
|2016-01-04| 7 |12 | ...
|2016-01-05|-1 | 4 | ...
| ... | .. | .. | ...
由于两个对象的列数不匹配,简单的减法就会导致错误non-conformable arrays:
set.seed(1234)
# set up date structure
dates <- seq(as.Date("2016-01-01"), length = 5, by = "days")
# create object A and B
A <- xts(x = matrix(seq(1:10), ncol = 2), order.by = dates)
B <- xts(x = rnorm(5), order.by = dates)
A-B
Error in `-.default`(A, B) : non-conformable arrays
问题:
如何从日期匹配的大型 XTS 对象(即A)的每个值中减去每次的单个值(即B)?
【问题讨论】: