非常新手Scala程序员所以希望这很简单。
我有一组看起来像这样的元组:
Array((1,Array(1.0,0.0,5.2,0.0),
(1,Array(1.0,0.0,6.3,0.0),
(2,Array(0.0,1.0,0.0,1.2),
(2,Array(0.0,1.0,0.0,2.5))
我想根据第一个中的键来总结元组第二部分中的相应值。所以结果看起来像这样:
Array((1,(2.0,0.0,11.5,0.0),
(2,(0.0,2.0,0.0,3.7))
我想出的功能是:
def sumByKeys[A](tuples: Array[(String, Array[Double])]) = {
tuples.groupBy(_._1).mapValues(_.map(_._2).sum)
}
我得到的错误是
error: could not find implicit value for parameter num: Numeric[Array[Double]]
tuples.groupBy(_._1).mapValues(_.map(_._2).sum)
^
我希望这只是简单的事情,我只是弄乱了数据类型。
感谢。
答案 0 :(得分:4)
scala> a.groupBy(_._1).mapValues(_.map(_._2).transpose.map(_.sum)).toArray
res2: Array[(Int, Array[Double])] = Array((2,Array(0.0, 2.0, 0.0, 3.7)),
(1,Array(2.0, 0.0, 11.5, 0.0)))