我现在正在与xts挣扎......我有一个XTS对象,我正在尝试用新的设备替换特定日期的数据,但我一直在遇到更换长度的问题,即使我确定它们是相同的,没有丢失的数据。有什么想法吗?
我做了一个虚拟的例子来证明我的问题:
R> test1 = xts(cbind(trade_level = 1, t2 = 3),order.by=as.Date("1991-01-02"))
R> test2 = xts(cbind(trade_level = 5, t2 = .053),order.by=as.Date("1991-01-02"))
R> first_day = "1991-01-02"
R> test1[first_day] = test2
Warning message:
In NextMethod(.Generic) :
number of items to replace is not a multiple of replacement length
R> sessionInfo()
R version 3.0.1 (2013-05-16)
Platform: x86_64-w64-mingw32/x64 (64-bit)
locale:
[1] LC_COLLATE=English_United States.1252 LC_CTYPE=English_United States.1252
[3] LC_MONETARY=English_United States.1252 LC_NUMERIC=C
[5] LC_TIME=English_United States.1252
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] reshape2_1.2.2 xts_0.9-7 zoo_1.7-10 ggplot2_0.9.3.1
loaded via a namespace (and not attached):
[1] colorspace_1.2-4 dichromat_2.0-0 digest_0.6.4 grid_3.0.1
[5] gtable_0.1.2 labeling_0.2 lattice_0.20-23 MASS_7.3-29
[9] munsell_0.4.2 plyr_1.8 proto_0.3-10 RColorBrewer_1.0-5
[13] scales_0.2.3 stringr_0.6.2 tools_3.0.1
答案 0 :(得分:2)
这是一个警告,而不是错误。它会给你一个关于错误的提示......你需要添加一个逗号来指定你想要替换所有列。
test1 = xts(cbind(trade_level = 1, t2 = 3),order.by=as.Date("1991-01-02"))
test2 = xts(cbind(trade_level = 5, t2 = .053),order.by=as.Date("1991-01-02"))
first_day = "1991-01-02"
test1[first_day,] = test2
但不要责怪xts,这就是矩阵类的工作原理:
test1 = xts(cbind(trade_level = 1, t2 = 3),order.by=as.Date("1991-01-02"))
test2 = xts(cbind(trade_level = 5, t2 = .053),order.by=as.Date("1991-01-02"))
m1 <- as.matrix(test1)
m2 <- as.matrix(test2)
m1[1] <- m2 # warning
m1[1,] <- m2 # works