xyplot,错误在`[.xts`(y,id):'i'或'j'超出范围

时间:2014-06-20 17:31:13

标签: r xts lattice

我试图分散两个变量,其中一个是lm()调用的残差。 xyplot()函数不会执行此散点图并返回错误消息

Error in `[.xts`(y, id) : 'i' or 'j' out of range

残差是一个xts变量,xyplot()实际上仍然可以自己绘制残差(只是时间图,而不是散点图)。

奇怪的是,到目前为止,我发现的工作是在已经xts残差上使用as.xts(),或者使用[ ,1]索引来引用第一列,即使有只有一列开头。

MWE在下面,只是在寻找解释,提前谢谢。

library('lattice')
library('xts')
a = as.xts(ts(rnorm(20), start=c(1980,1), freq=4))
b = as.xts(ts(rnorm(20), start=c(1980,1), freq=4))

c = resid(lm(a~b))
str(c) # xts object

xyplot(c~a) # does not work: Error in `[.xts`(y, id) : 'i' or 'j' out of range
xyplot(c) # xyplot can plot it by itself just fine
xyplot(as.xts(c)~a) # works, if you use as.xts() on an xts object ?
xyplot(c[ ,1]~a) # works, if you refer to the 1st column of a 1 column object ? 

1 个答案:

答案 0 :(得分:1)

问题是因为c没有dim属性,就像大多数xts对象那样,以及xts对象有多少xts函数。设置dim属性,一切都没问题。

dim(c) <- c(length(c),1)
xyplot(c~a)