我想使用lag
函數在xts對象內創建滯後矢量。它在使用$
表示法(例如x.ts$r1_lag
)在xts對象內定義新矢量時起作用,但是它在使用方括號定義新變量時,即xts[,"r1_lag"]
。請參見下面的代碼:
library(xts)
x <- data.frame(date=seq(as.Date('2015-01-01'), by='days', length=100),
runif(1e2), runif(1e2), runif(1e2))
colnames(x) <- c("date", "r1", "r2", "r3")
#the following command works
x.ts <- xts(x, order.by=x$date)
x.ts$r1_lag <- lag(x.ts$r1)
# but the following does not (says subscript is out of bounds)
x.ts <- xts(x, order.by=x$date)
x.ts[,"r1_lag"] <- lag(x.ts[,"r1"])
我需要使用[]
符號,而不是$
符號,因爲參考矢量如果我想多XTS的列表中運行的向量上的滯後轉型的不止一個XTS對象(矢量
for (i in letters) {
for (j in variables) {
macro.set.ts$i$paste(j,"_L1",sep="") <- lag(macro.set.ts[[i]][,j])
macro.set.ts$i$paste(j,"_L2",sep="") <- lag(macro.set.ts[[i]][,j], 2)
macro.set.ts$i$paste(j,"_L4",sep="") <- lag(macro.set.ts[[i]][,j], 4)
}
}
感謝:對象),我不能用$
符號,即我不能使用符號在下面的程式化循環定義新的向量定義對象中的新的載體!
附註:爲什麼你的xts中有一個日期列?您應該只有數字列並將該日期用作索引。否則,你將不會從使用'xts'獲得任何利益(在你的例子中它只是一種字符矩陣) – agstudy