我试图分散两个变量,其中一个是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 ?
答案 0 :(得分:1)
问题是因为c
没有dim
属性,就像大多数xts对象那样,以及xts对象有多少xts函数。设置dim
属性,一切都没问题。
dim(c) <- c(length(c),1)
xyplot(c~a)