我从来不理解lag
函数,而是Lag
从quantmod
包中使用:
> # library(quantmod)
> apply(B, 2, Lag)
[,1] [,2]
[1,] NA NA
[2,] 2 1
[3,] 4 5
如果您想要(或需要)滞后一个没有ts
属性的矩阵,一种方法可能是使用apply
和Lag
来自 quantmod 包,但如果您不想只为一个功能安装包,那么您可以编写自己的函数,一个想法是像这样:
lag.matrix <- function(x, k=1){
N <- ncol(B)
l <- matrix(embed(x,k+1)[, -c(1:(k*N))], ncol=N)
NAs <- matrix(rep(NA, k*N), ncol=N)
rbind(NAs, l)
}
> lag.matrix(B, k=1)
[,1] [,2]
[1,] NA NA
[2,] 2 1
[3,] 4 5
> lag.matrix(B, k=2)
[,1] [,2]
[1,] NA NA
[2,] NA NA
[3,] 2 1
另一种解决方案可能是@GSee 作为评论发布的解决方案,您可以根据需要使用lag
它。
> lag(xts(B, .POSIXct(0)+0:(nrow(B)-1)))
[,1] [,2]
1970-01-01 01:00:00 NA NA
1970-01-01 01:00:01 2 1
1970-01-01 01:00:02 4 5