以下内容会产生错误
a1 = as.xts(ts(rnorm(20), start=c(1980,1), freq=4))
a2 = as.xts(ts(rnorm(30), start=c(1983,1), freq=4))
a = ts.intersect(a1,a2)
Error in .cbind.ts(list(...), .makeNamesTs(...), dframe = dframe, union = FALSE) :
no time series supplied
文档说参数应该是
两个或多个单变量或多变量时间序列,或者可以强制转换为时间序列的对象。
答案 0 :(得分:2)
ts.intersect
通过查找ts
属性来确定对象是否为tsp
对象。 as.xts.ts
删除了tsp
属性,这就是为什么它不会被强制回ts
个对象。
这看起来像xts-> ts-> xts转换中的错误,但我需要仔细看看。
作为解决方法,您可以手动将tsp
属性添加到xts对象(请注意,这可能会导致其他xts方法出现问题,例如str.xts
)并添加.tsp
}属性。
set.seed(21)
A1 <- ts(rnorm(20), start=c(1980,1), freq=4)
A2 <- ts(rnorm(30), start=c(1983,1), freq=4)
# convert to xts
a1 <- as.xts(A1)
a2 <- as.xts(A2)
# add tsp attribute
# (so stats:::.cbind.ts will think these are coercible to ts objects)
tsp(a1) <- tsp(A1)
tsp(a2) <- tsp(A2)
# add .tsp attribute
# (needed for as.ts.xts to work)
attr(a1,'.tsp') <- tsp(A1)
attr(a2,'.tsp') <- tsp(A2)
a <- ts.intersect(a1,a2)