R package ‘lagged’ provides classes and methods for objects, like autocovariances, whose natural indexing starts from zero.

The latest stable version is on CRAN.

`install.packages("lagged")`

The vignette shipping with the package gives illustrative examples.
`vignette("Guide_lagged", package = "lagged")`

.

You can install the development version of
`lagged`

from Github:

```
library(devtools)
install_github("GeoBosh/lagged")
```

The package provides several classes with methods for indexing
starting from zero. Objects can be created with the function
`Lagged()`

. It returns a suitable Lagged object from a class
suitable for the argument:

```
library(lagged)
v_lagged <- Lagged(0:6) # 1d object
m_lagged <- Lagged(matrix(1:12, nrow = 4)) # 2d object
a_lagged <- Lagged(array(1:24, dim = c(4,3,2))) # 3d object
```

It recognises also `"acf"`

objects from base R time series
functions:

`ap_lagged <- Lagged(acf(AirPassengers, plot = FALSE))`

The maximal lag stored in the object can be obtained with
`maxLag()`

:

```
maxLag(v_lagged)
maxLag(m_lagged)
maxLag(a_lagged)
```

The length of the objects is equal to
`maxlag(object) + 1`

.

```
length(v_lagged)
length(m_lagged)
length(a_lagged)
```

Subsetting with `"["`

drops the laggedness and returns
vector, matrix, or array, depending on the dimension of the object.
Subsetting with one index gives the data for the requested lags:

```
tmp <- v_lagged[0:2]
tmp <- m_lagged[0:2]
tmp <- a_lagged[0:1]
```

Values beyond the maximal lag are `NA`

. Dimensions are not
dropped if an extent has length one
(i.e. `drop = FALSE`

):

```
v_lagged[0]
m_lagged[0]
a_lagged[0]
```

To drop dimensions, use “[[”:

```
v_lagged[[0]]
m_lagged[[0]]
a_lagged[[0]]
```

Arithmetic operations and mathematical functions are defined
naturally on lagged objects. The shorter one is extended with
`NA`

’s to the length of the longer.

Operations between lagged and base R objects are defined, as well.
However, it is an error to do operations between objects whose
dimensions do not match, unless the base R object is a scalar, or, more
generally, has the size of `x[[0] ]`

.