Nigdy nie rozumiałem lag
funkcję, zamiast użyję Lag
z quantmod
pakietu :
> # library(quantmod)
> apply(B, 2, Lag)
[,1] [,2]
[1,] NA NA
[2,] 2 1
[3,] 4 5
Jeśli chcesz (lub potrzebujesz) pozostawić macierz bez atrybutów ts
w jedną stronę, możesz użyć apply
i Lag
z pakietu quantmod, ale jeśli nie chcesz instalować pakietu dla jednej funkcji, możesz napisać własną funkcję, pomysłem byłoby tak:
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
Innym soluction może być wysłana jako jeden komentarz przez @GSee który wykorzystuje lag
jak chcesz.
> 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
Zobacz także: http://r.789695.n4.nabble.com/Odd-results-with-lag-td3434712.html – harkmug