2016-04-26 19 views

答えて

3

あなたはこのようにそれを行うことができます。

val xs = Array("a", "b", "c", "c", "a", "b", "c", "b", "b", "a") 
xs.groupBy(identity).mapValues(_.length) 

またはこのような:

xs.foldLeft(Map[String, Int]().withDefaultValue(0))((acc, x) => acc + (x -> (acc(x) + 1))) 

またはあなたがより効率的になりたい場合は、コピーを防止するために、内部可変性を使用することができます。

def countElems[A](xs: Array[A]): Map[A, Int] = { 
    val result = collection.mutable.Map[A, Int]().withDefaultValue(0) 
    xs foreach { x => result += (x -> (result(x) + 1)) } 
    result.toMap // this copies and makes it immutable, O(number of distinct elements) 
} 
+0

collect()を使用せずにDataFrame(1列)型のxsパラメータで記述できますか?私はDataFrameでforeachを使用して結果マップを更新できませんでした。 –

関連する問題