Soy nuevo en Scala y quiero calcular una suma móvil con una ventana fija para una lista.
Por ejemplo: dados los valores de la lista (1.0, 2.0, 3.0, 6.0, 7.0, 8.0, 12.0, 9.0, 4.0, 1.0), y el período 4, la función debería devolver: (1.0, 3.0, 6.0, 12.0, 18.0, 24.0, 33.0, 36.0, 33.0, 26.0)
Si list.size <punto, simplemente devuelve la suma acumulativa.
He hecho algunos intentos
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
}
}
Sin embargo, tengo
List(12.0, 18.0, 24.0, 33.0, 36.0, 33.0, 26.0, 26.0, 26.0, 26.0
lo cual no es correcto No quiero usar Pyspark para obtener los resultados. Alguien puede ayudar?
Muchas gracias.
sliding
método