Ho il seguente problema: Ho una serie temporale con più di 10000 voci e voglio eseguire alcuni calcoli con ciascuna di esse. Questo da solo non sarebbe un problema, ma ho bisogno di ottenere l'ultimo valore calcolato per ottenere quello successivo. Una forma molto semplice di quello che mi serve sarebbe simile a questa:Problema con iterazione su una serie storica in clojure
Val(n) = Val(n-1) + (time-series-entry/2)
(! O qualcosa di simile)
Non ho idea di come gestire questo. Semplicemente facendo qualcosa di simile:
(defn calc-val
[time-series element]
(seq (cons (generate-val-element time-series element)
(calc-val time-series (inc element)))))
non avrebbe funzionato, perché non posso (almeno io non so come!) Ottenere l'ultimo valore calcolato. Poi ho pensato: OK, usiamo Loop-Recur. Questo mi darebbe il valore corrispondente alla voce della serie temporale MA per il prossimo dovrei fare di nuovo tutti i calcoli. Iterate sarebbe la cosa giusta, ma non ha funzionato perché la funzione ha effetti collaterali.
Quindi sono bloccato qui su questo. Sarebbe bello se qualcuno potesse darmi un suggerimento.
Se io comprendere correttamente la domanda, il risultato della trasformazione su ogni passaggio dipende dal risultato della trasformazione nel passaggio precedente, non dalla precedente non trasformata. Quindi indirettamente dipende dall'intero frammento iniziale della serie seq che lo precede. (Spero di essere corretto dall'OP se sbaglio. :-)) –
Se è così, assolutamente. L'ho capito in modo diverso (come il suo esempio imperativo ha fatto sembrare il contrario), ma sono felice di aver sbagliato o ragione! In ogni caso, è in buone mani;) – Isaac
Sembra così anche a me. Spero che sia d'accordo. :-) –