6.7 Indexing
Stan arrays, matrices, vectors, and row vectors are all accessed
using the same array-like notation. For instance, if x is a
variable of type real[] (a one-dimensional array of reals)
then x[1] is the value of the first element of the
array.
Subscripting has higher precedence than any of the arithmetic
operations. For example, alpha*x[1] is equivalent to
alpha*(x[1]).
Multiple subscripts may be provided within a single pair of square
brackets. If x is of type real[ , ], a two-dimensional
array, then x[2,501] is of type real.
Accessing Subarrays
The subscripting operator also returns subarrays of arrays. For
example, if x is of type real[ , , ], then x[2]
is of type real[ , ], and x[2,3] is of type
real[]. As a result, the expressions x[2,3] and
x[2][3] have the same meaning.
Accessing Matrix Rows
If Sigma is a variable of type matrix, then
Sigma[1] denotes the first row of Sigma and has the
type row_vector.
Mixing Array and Vector/Matrix Indexes
Stan supports mixed indexing of arrays and their vector, row vector
or matrix values. For example, if m is of type
matrix[ , ], a two-dimensional array of matrices, then
m[1] refers to the first row of the array, which is a
one-dimensional array of matrices. More than one index may be used,
so that m[1,2] is of type matrix and denotes the matrix
in the first row and second column of the array. Continuing to add
indices, m[1,2,3] is of type row_vector and denotes
the third row of the matrix denoted by m[1,2]. Finally,
m[1,2,3,4] is of type real and denotes the value in the
third row and fourth column of the matrix that is found at the first
row and second column of the array m.