This is an old version, view current version.

## 5.9 Slicing and Blocking Functions

Stan provides several functions for generating slices or blocks or diagonal entries for matrices.

### 5.9.1 Columns and Rows

vector col(matrix x, int n)
The n-th column of matrix x

row_vector row(matrix x, int m)
The m-th row of matrix x

The row function is special in that it may be used as an lvalue in an assignment statement (i.e., something to which a value may be assigned). The row function is also special in that the indexing notation x[m] is just an alternative way of writing row(x,m). The col function may not, be used as an lvalue, nor is there an indexing based shorthand for it.

### 5.9.2 Block Operations

#### 5.9.2.1 Matrix Slicing Operations

Block operations may be used to extract a sub-block of a matrix.

matrix block(matrix x, int i, int j, int n_rows, int n_cols)
Return the submatrix of x that starts at row i and column j and extends n_rows rows and n_cols columns.

The sub-row and sub-column operations may be used to extract a slice of row or column from a matrix

vector sub_col(matrix x, int i, int j, int n_rows)
Return the sub-column of x that starts at row i and column j and extends n_rows rows and 1 column.

row_vector sub_row(matrix x, int i, int j, int n_cols)
Return the sub-row of x that starts at row i and column j and extends 1 row and n_cols columns.

#### 5.9.2.2 Vector and Array Slicing Operations

The head operation extracts the first $$n$$ elements of a vector and the tail operation the last. The segment operation extracts an arbitrary subvector.

vector head(vector v, int n)
Return the vector consisting of the first n elements of v.

row_vector head(row_vector rv, int n)
Return the row vector consisting of the first n elements of rv.

T[] head(T[] sv, int n)
Return the array consisting of the first n elements of sv; applies to up to three-dimensional arrays containing any type of elements T.

vector tail(vector v, int n)
Return the vector consisting of the last n elements of v.

row_vector tail(row_vector rv, int n)
Return the row vector consisting of the last n elements of rv.

T[] tail(T[] sv, int n)
Return the array consisting of the last n elements of sv; applies to up to three-dimensional arrays containing any type of elements T.

vector segment(vector v, int i, int n)
Return the vector consisting of the n elements of v starting at i; i.e., elements i through through i + n - 1.

row_vector segment(row_vector rv, int i, int n)
Return the row vector consisting of the n elements of rv starting at i; i.e., elements i through through i + n - 1.

T[] segment(T[] sv, int i, int n)
Return the array consisting of the n elements of sv starting at i; i.e., elements i through through i + n - 1. Applies to up to three-dimensional arrays containing any type of elements T.