eachPre (:P)
Syntax
eachPre(func, X, [pre])
or
[pre] <operator>:P X
Arguments
func is a binary function.
X is a vector/matrix/table.
When X is a vector, pre must be a scalar; when X is a matrix, pre must be a vector; when X is a table, pre must be a dictionary. When pre is absent, the first element in the result would be NULL.
Details
Apply func over all pairs of consecutive elements of X. It is equivalent to: F(X[0], pre), F(X[1], X[0]), …, F(X[n], X[n-1]).
The built-in functions ratios and deltas are also implemented by the eachPre
template. They are defined as:
function deltas(a){return a[0] -:P a}
function ratios(a){return a[0] :P a}
Examples
$ x=1..10;
$ eachPre(sub, x);
[,1,1,1,1,1,1,1,1,1]
// equivalent to [NULL, 2-1, ..., 10-9]
$ -:P x;
[,1,1,1,1,1,1,1,1,1]
// same as above
$ eachPre(+, x);
[,3,5,7,9,11,13,15,17,19]
// equivalent to [NULL, 2+1, ..., ]
$ 0 +:P x;
[1,3,5,7,9,11,13,15,17,19]
// equivalent to [1+0, 2+1, ..., ]
$ x=1..12$3:4;
x;
col1 |
col2 |
col3 |
col4 |
---|---|---|---|
1 |
4 |
7 |
10 |
2 |
5 |
8 |
11 |
3 |
6 |
9 |
12 |
$ - :P x;
col1 |
col2 |
col3 |
col4 |
---|---|---|---|
3 |
3 |
3 |
|
3 |
3 |
3 |
|
3 |
3 |
3 |
$ eachPre(\, x, x[0]);
col1 |
col2 |
col3 |
col4 |
---|---|---|---|
1 |
4 |
1.75 |
1.428571 |
1 |
2.5 |
1.6 |
1.375 |
1 |
2 |
1.5 |
1.333333 |