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
.