Tôi chưa quen với Scala và tôi muốn tính tổng di chuyển với một cửa sổ cố định cho danh sách.
Ví dụ: Cho các giá trị danh sách (1.0, 2.0, 3.0, 6.0, 7.0, 8.0, 12.0, 9.0, 4.0, 1.0) và giai đoạn 4, hàm sẽ trả về: (1.0, 3.0, 6.0, 12.0, 18.0, 24.0, 33.0, 36.0, 33.0, 26.0)
Nếu list.size <period thì chỉ cần trả lại tổng tích lũy.
Tôi đã thực hiện một số nỗ lực
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
}
}
Tuy nhiên, tôi đã nhận
List(12.0, 18.0, 24.0, 33.0, 36.0, 33.0, 26.0, 26.0, 26.0, 26.0
Điều này không đúng. Tôi không muốn sử dụng Pyspark để có kết quả. Ai đó có thể giúp gì không?
Cảm ơn nhiều.
sliding
thử phương pháp