Hi huys: Tôi muốn ánh xạ "trung bình" cho tất cả các giá trị trong bản đồ. nói rằng tôi có một danh sách các bản đồ:Tôi có thể "chuyển đổi" danh sách bản đồ thành bản đồ danh sách trong Clojure không?
[{"age" 2 "height" 1 "weight" 10},
{"age" 4 "height" 4 "weight" 20},
{"age" 7 "height" 11 "weight" 40}]
Và đầu ra mong muốn của tôi là
{"age 5 "height" 5 ....}
/// Dưới đây là những lời huyên thuyên của bộ não của tôi, tức là cách tôi có thể tưởng tượng làm việc này trong Clojure .. .not phải được thực hiện nghiêm túc quá
transpose danh sách:
{"age" [2 4 7] "height" [1 4 11] }
và sau đó tôi chỉ có thể làm một cái gì đó như (một lần nữa, chiếm một hàm gọi là freduce đây)
(freduce average (vals (map key-join list)))
để có được
{"age" 5 "weight" 10 "height" 7}
Bạn sẽ muốn giảm để bạn không phải duyệt qua chuỗi hai lần. Bạn sẽ bắt đầu với một bản đồ trống làm bộ tích lũy của bạn và khi bạn giảm được mỗi bản đồ, tổng hợp tất cả các giá trị với các giá trị tương ứng trong bộ tích lũy. Trên phần tử cuối cùng của danh sách, hãy chia từng giá trị theo độ dài của danh sách. –
Tôi thực sự muốn làm toán học phức tạp hơn trên dữ liệu (độ lệch chuẩn, ...), vì vậy Im nghĩ rằng tôi muốn tách rời cách dữ liệu được sáp nhập từ cách nó được chuyển đổi. – jayunit100