在多变量zoo对象上使用lag函数后,将使用使用连字符的自动命名约定创建新变量。例如,变量var2
的滞后将被命名为var2.lag-4
,依此类推。问题是,当我想引用此变量时,例如在plot(var2.lag-4)
中,它返回错误消息对象var2.lag
未找到
我认为这是因为它将连字号视为一个变量名和标量数4之间的减法符号。
是否可以在没有此错误的情况下参考这些滞后的动物园变量?
请注意,我还附加了对象,因此可以直接使用变量名。
这是一个例子
var1 = ts(rnorm(20), start=1995.00, freq=4)
var2 = ts(rnorm(20), start=1995.00, freq=4)
X = cbind(var1, var2)
newX = lag(as.zoo(X),-1:-4) # lags 1 to 4 of all variables
attach(as.list(newX))
plot(var2.lag-1)
#Error in plot.window(...) : need finite 'ylim' values
#In addition: Warning messages:
#1: In xy.coords(x, y, xlabel, ylabel, log) : NAs introduced by coercion
#2: In min(x) : no non-missing arguments to min; returning Inf
#3: In max(x) : no non-missing arguments to max; returning -Inf
答案 0 :(得分:1)
您必须告诉plot
该字符串是newX
列的名称:
plot(newX[ , "var2.lag-1"])
答案 1 :(得分:0)
如果k
有名称,那么这些名称将用于创建新的列名称。因此,您可以将名称添加到传递给k
的矢量:
k <- -1:-4
# make.names will ensure the column names are syntactically valid
names(k) <- make.names(paste0("lag",k))
newX <- lag(as.zoo(X), k)
并且plot
不知道如何处理字符串。你必须传递一个对象来绘制。
plot(newX$var2.lag.1)