Ich bin neu in Scala und möchte eine bewegliche Summe mit einem festen Fenster für eine Liste berechnen.
Beispiel: Angesichts der Listenwerte (1.0, 2.0, 3.0, 6.0, 7.0, 8.0, 12.0, 9.0, 4.0, 1.0) und der Periode 4 sollte die Funktion Folgendes zurückgeben: (1.0, 3.0, 6.0, 12.0, 18.0, 24,0, 33,0, 36,0, 33,0, 26,0)
Wenn list.size <period ist, geben Sie einfach die kumulative Summe zurück.
Ich habe einige Versuche gemacht
def mavg(values: List[Double], period: Int): List[Double] = {
if (values.size <= period) (values.sum ) :: List.fill(period -1)(values.sum ) else {
val rest: List[Double] = mavg(values.tail, period)
(rest.head + ((values.head - values(period)))):: rest
}
}
Ich habe jedoch
List(12.0, 18.0, 24.0, 33.0, 36.0, 33.0, 26.0, 26.0, 26.0, 26.0
das ist nicht richtig. Ich möchte Pyspark nicht verwenden, um die Ergebnisse zu erhalten. Kann jemand helfen?
Danke vielmals.
sliding