# vsubc

Extract rows from a vector or matrix.

Usage
 `vsubc(x, c, v {, y})` with c = 0, 1, 4 or 5 `vsubc(x, c, v1, v2 {, y})` with c = 2, 3, 6 or 7
x
condition vector (and source vector if argument y is not supplied); must be a vector!
c
condition used to select values
v, v1, v2
lower and/or upper boundary; must be a scalar or a vector with the same length as x
y
optional source data; must be a vector or matrix with the same number of rows as x
Result
A numerical object consisting of all selected rows of the source y (or x if y is not supplied). The 2nd argument c must be a number in the range 0 to 7 and defines the condition used for the selection of the source rows.
value of c row i is selected if ...
0 `x[i] < v`
1 `x[i] > v`
2 `v1 < x[i] < v2`
3 `x[i] < v1 or x[i] > v2`
4 `x[i] ≤ v`
5 `x[i] ≥ v`
6 `v1 ≤ x[i] ≤ v2`
7 `x[i] ≤ v1 or x[i] ≥ v2`
If a boundary v is a vector, the i-th element of the vectors x and v are compared, otherwise the element x[i] is compared with the number v. The function failes, if no row is selected.
vsubn, limit, limitlow, limithigh, select

Example:

```#a := eval vv(1,2,3,4,5)
#b := eval vmcol(\$#a, vv(5,4,3,2,1))
#c := vsubc(\$#a,0,3)
// -> vector: \$#c = { 1 , 2 }
#d := eval vsubc(\$#a,2,0,5,\$#b)
// -> matrix: \$#d[*,0] = { 2 , 3 , 4 },  \$#d[*,1] = { 4 , 3 , 2 }
#e := eval vsubc(\$#a,7,2,4)
// -> vector: \$#e = { 1 , 2 , 4 , 5 }
```