Tôi chưa bao giờ hiểu lag
chức năng, thay vào đó tôi muốn sử dụng Lag
từ quantmod
gói :
> # library(quantmod)
> apply(B, 2, Lag)
[,1] [,2]
[1,] NA NA
[2,] 2 1
[3,] 4 5
Nếu bạn muốn (hoặc cần) trễ ma trận mà không cần ts
, một cách có thể sử dụng apply
và Lag
từ gói quantmod, nhưng nếu bạn không muốn cài đặt gói chỉ với một chức năng thì bạn có thể viết hàm của riêng mình, một ý tưởng sẽ là như thế này:
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
soluction khác có thể là một posted như một bình luận bởi @GSee trong đó sử dụng lag
như bạn muốn.
> 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
Cũng thấy: http://r.789695.n4.nabble.com/Odd-results-with-lag-td3434712.html – harkmug