如果我们将示例缩小,则会更容易一些。下面的代码强制第二个参数为a zoo 类对象给予 zoo(as.character(11:13), 1:3) 然后它强制第二个参数的索引类( integer )与第一个参数具有相同的索引类( Date )。警告消息确实警告正在使用不同的索引类。
zoo
zoo(as.character(11:13), 1:3)
integer
Date
cbind.zoo 确实有处理普通向量的特殊处理,但前提是它们与动物园对象的核心数据类型相同。有一个简单的矢量使用了 相同的类型 作为第一个论点的核心数据,即两者 numeric ,它会按预期工作。标注出的注释掉的行 correct 显示了这个。
cbind.zoo
numeric
correct
library(zoo) dates.zoo <- zoo(data.frame(val= 1:3), as.Date('2019-01-03') + 0:2) # cbind(dates.zoo, ti=11:13) # correct cbind(dates.zoo, ti=as.character(11:13)) # incorrect
这使:
val ti 1970-01-02 <NA> 11 1970-01-03 <NA> 12 1970-01-04 <NA> 13 2019-01-03 1 <NA> 2019-01-04 2 <NA> 2019-01-05 3 <NA> Warning message: In merge.zoo(..., all = all, fill = fill, suffixes = suffixes, retclass = "zoo", : Index vectors are of different classes: Date integer
另请注意:
as.Date(1:3) ## [1] "1970-01-02" "1970-01-03" "1970-01-04"