r - 如何更新多列 XTS 对象中的一行?

标签 r xts

给定一个单列 xts 对象,我可以像这样更新一行:

library(xts)
a=xts(1:5,Sys.Date()+1:5)
b=xts(77:77,Sys.Date()+2)
a[index(b)]=b

但是一旦我有 2+ 行,它就会失败,并显示“要替换的项目数不是替换长度的倍数”:

a=xts(1:5,Sys.Date()+1:5);colnames(a)='x';a$y=11:15
b=xts(77:77,Sys.Date()+2);colnames(b)='x';b$y=78:78
a[index(b)]=b

我应该如何更新 xts 对象中的单行?

目前我有这个技巧:

a$x[index(b)]=b$x
a$y[index(b)]=b$y

有没有更好的办法?

预期结果:

> a
            x  y
2012-12-24  1 11
2012-12-25 77 78
2012-12-26  3 13
2012-12-27  4 14
2012-12-28  5 15

最佳答案

最简单的方法是在子集命令中使用逗号:

a=xts(1:5,Sys.Date()+1:5);colnames(a)='x';a$y=11:15
b=xts(77:77,Sys.Date()+2);colnames(b)='x';b$y=78:78
a[index(b),]=b

关于r - 如何更新多列 XTS 对象中的一行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14010068/

相关文章:

java - Ant 的代码未在 Maven 中运行

r - 将行名称赋予 R 中的表

r - 提取模式之间的多个字符串 block

r - 如何删除 R 中嵌套数据框中的列?

R 将每小时数据转换为每日数据高达 0 :00 instead of 23:00

将 txt 文件读入列表,其中每个列表元素由以冒号结尾的行分隔

r - 将时间戳(开始、结束)转换为时间序列数据。 align.time() 和 colname 错误

r - 每个公司每个月的最后观察 (R)

r - XTS split 的艰难时期

r - 绘制 xts 对象 : 'x' must be a time-series object 时出错