给定一个单列 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/