У меня проблема: У меня есть временной ряд с более чем 10000 записей, и я хочу выполнить некоторые вычисления с каждым из них. Это само по себе не будет проблемой, но мне нужно получить последнее рассчитанное значение, чтобы получить следующий. Очень простая форма того, что я должен был бы выглядеть следующим образом:Проблема с итерацией по временному ряду в clojure
Val(n) = Val(n-1) + (time-series-entry/2)
(! Или что-то вроде этого)
Я не имею ни малейшего представления, как управлять этим. Просто делать что-то вроде этого:
(defn calc-val
[time-series element]
(seq (cons (generate-val-element time-series element)
(calc-val time-series (inc element)))))
не будет работать, потому что не может (по крайней мере, я не знаю, как!) Получить последнее вычисленное значение. Тогда я подумал: «Хорошо, давайте использовать Loop-Recur. Это дало бы мне значение, соответствующее записи временного ряда, но для следующего я должен был бы снова выполнить все вычисления. Iterate будет правильным, но это не сработало, потому что функция имеет побочные эффекты.
Так что я застрял здесь на этом. Было бы здорово, если бы кто-нибудь мог дать мне подсказку.
Если я правильно понять вопрос, результат преобразования на каждом шаге зависит от результата преобразования на предыдущем шаге - а не от предыдущей нетрансформированной записи. Таким образом, косвенно это зависит от всего исходного фрагмента серии seq, предшествующего ему. (В надежде, что OP будет исправлена, если я ошибаюсь. :-)) –
Если это так, абсолютно. Я понял это по-другому (поскольку его императивный пример сделал это иначе), но я счастлив, что ошибаюсь или прав! В любом случае, он в хороших руках;) – Isaac
Кажется, мне тоже. Здесь мы надеемся, что он согласен. :-) –