Hola, amigos: Quiero mapear un "promedio" para todos los valores en un mapa. decir que tengo una lista de mapas:¿Puedo "transponer" una lista de mapas en un mapa de listas en Clojure?
[{"age" 2 "height" 1 "weight" 10},
{"age" 4 "height" 4 "weight" 20},
{"age" 7 "height" 11 "weight" 40}]
Y mi salida deseada es
{"age 5 "height" 5 ....}
/// A continuación se presentan las divagaciones de mi cerebro, es decir, la forma en que podría imaginar que este trabajo en Clojure .. .no ser tomado demasiado en serio
transponer la lista:
{"age" [2 4 7] "height" [1 4 11] }
y luego yo podría simplemente hacer algo al igual que (una vez más, lo que representa una función llamada freduce aquí)
(freduce average (vals (map key-join list)))
para obtener
{"age" 5 "weight" 10 "height" 7}
Va a querer reducir para que no tenga que recorrer la secuencia dos veces. Comenzará con un mapa vacío como su acumulador y, a medida que su reducción llegue a cada mapa, sume todos los valores con los valores correspondientes en el acumulador. En el último elemento de la lista, divida cada valor por la longitud de la lista. –
Realmente quiero hacer matemáticas más sofisticadas en los datos (desviación estándar, ...), así que estoy pensando que quiero desacoplar la forma en que se fusionan los datos de la forma en que se transpone. – jayunit100