Last data update: 2014.03.03

R: Segment a sequence into shifted versions of itself
segmentR Documentation

Segment a sequence into shifted versions of itself

Description

Create a shifted version of a sequence to make it easier to do certain types of analysis.

Arguments

x

A vector

do.pad

Whether the vector should be padded to contain the edges of the sequence

Value

The return value is a data.frame with dimensions length(x) - 1 by 2 or length(x) + 1 by 2 if do.pad == TRUE. A data.frame is used to support arbitrary types. For example, using a Date vector will result in a numeric output, which is inconvenient.

Usage

segment(x, do.pad=FALSE)

Details

Segmenting sequences into offset versions of itself is useful for detecting patterns in sequences. This approach is compatible with a functional programming style as each row can then be passed to a map-vectorized function for further processing.

The advantage over an iterative approach is that the map-vectorized function can focus on a row-specific model independent of data management mechanics like maintaining proper indices while iterating over the sequence, as this is handled by segment.

Note

The segment function is a convenience and can be implemented using the general functions partition and also maprange. If you want more than two columns, use maprange.

Author(s)

Brian Lee Yung Rowe

See Also

partition maprange

Examples

segment(1:10)

# Notice how the ends of the sequence are given their own rows
segment(1:10, TRUE)

# Emulate segment using partition
partition(1:10, function(x) x, 1)

# Emulate segment using maprange
t(maprange(1:10, 2, function(x) x))

# Create four shifted copies instead of two
maprange(1:10, 4, function(x) x)

Results