Scala - 使用 .indexOf() 和 .indexWhere()
Scala - Use of .indexOf() and .indexWhere()
我有一个如下所示的元组:
(Age, List(19,17,11,3,2))
并且我想获得第一个元素在列表中的位置大于它们的值的位置。为此,我尝试使用 .indexOf() 和 .indexWhere() 但我可能找不到完全正确的语法,所以我不断得到:
value indexWhere is not a member of org.apache.spark.rdd.RDD[(String,
Iterable[Int])]
到目前为止我的代码是:
val test =("Age", List(19,17,11,3,2))
test.indexWhere(_.2(_)<=_.2(_).indexOf(_.2(_)) )
我也在这里搜索了文档,没有结果:http://www.scala-lang.org/api/current/index.html#scala.collection.immutable.List
如果你想为 RDD 中的每个元素执行此操作,你可以使用 RDD 的 mapValues
(它只会映射元组)并传递一个使用 indexWhere
:
的函数
rdd.mapValues(_.zipWithIndex.indexWhere { case (v, i) => i+1 > v} + 1)
备注:
- 您的示例似乎有误,如果您想要 last 匹配项,它应该是 5(2 的位置)而不是 4
- 您没有定义当没有项目符合您的条件时应该做什么,例如对于
List(0,0,0)
- 在这种情况下,结果将是 0 但不确定那是你需要的
我有一个如下所示的元组:
(Age, List(19,17,11,3,2))
并且我想获得第一个元素在列表中的位置大于它们的值的位置。为此,我尝试使用 .indexOf() 和 .indexWhere() 但我可能找不到完全正确的语法,所以我不断得到:
value indexWhere is not a member of org.apache.spark.rdd.RDD[(String, Iterable[Int])]
到目前为止我的代码是:
val test =("Age", List(19,17,11,3,2))
test.indexWhere(_.2(_)<=_.2(_).indexOf(_.2(_)) )
我也在这里搜索了文档,没有结果:http://www.scala-lang.org/api/current/index.html#scala.collection.immutable.List
如果你想为 RDD 中的每个元素执行此操作,你可以使用 RDD 的 mapValues
(它只会映射元组)并传递一个使用 indexWhere
:
rdd.mapValues(_.zipWithIndex.indexWhere { case (v, i) => i+1 > v} + 1)
备注:
- 您的示例似乎有误,如果您想要 last 匹配项,它应该是 5(2 的位置)而不是 4
- 您没有定义当没有项目符合您的条件时应该做什么,例如对于
List(0,0,0)
- 在这种情况下,结果将是 0 但不确定那是你需要的