Встроенная функция оператора с задержкой в ​​Julia

Есть ли в julia встроенная функция оператора с задержкой? То есть функция вида:

lagop(op,array,offset)

это возвращает что-то вроде

[array[i + offset] (op) array[i] for i in 1:length(array)-offset]

Для последовательных различий есть функция diff. На суммы одно из следующих произведений:

x = collect(1:10)
x[1:end-1]+x[2:end]
[x[i]+x[i+1] for i in 1:length(x)-1]

Есть ли какая-то общая функция для выполнения подобных задач?


person Richard Border    schedule 22.10.2017    source источник
comment
lagop(op,array,offset) = [op(array[i + offset], array[i]) for i in 1:length(array)-offset] не хватает?   -  person Liso    schedule 22.10.2017
comment
@Liso Это определенно реализуемо, но в некоторых сценариях такие операции используются повсеместно, и такая функция экономит время / повышает удобочитаемость. Например, rollapply в R пакет zoo.   -  person Richard Border    schedule 22.10.2017


Ответы (1)


Вы упомянули библиотеку зоопарка в R, которая предназначена для временных рядов. Если это ваш вариант использования, вы обнаружите, что задержка реализована в TimeSeries.jl: http://timeseriesjl.readthedocs.io/en/latest/apply.html#lag Однако это может быть не совсем то, что вам нужно.

person Michael K. Borregaard    schedule 23.10.2017
comment
Не совсем то, что я хочу, но это полезно. Похоже, что функция, которую я искал, слишком легко реализовать на базовом языке, чтобы заслужить свою собственную функцию ... - person Richard Border; 15.11.2017