首页 > 解决方案 > 如何在没有for in scala的情况下迭代数组?

问题描述

我有并且RDD[(BreezeMatrix[Double], Array[Int])]我想删除Matrix.array

例如,如果Array[1, 3, 4],我想从Matrix.

我的代码是:

 val  viol = rdd.map(x =>  for (p <- x._2) {val c = x._1.delete(p, Axis._0)})

但是对于开始我得到Unit作为返回类型,即使我返回矩阵。此外,我想知道在 scala 中是否有更实用的方法。

标签: arraysscala

解决方案


更实用的方法是迭代要删除的索引数组,并在迭代步骤之间累积状态。为此,您可以使用foldLeftfoldLeft适用于元素集合,在您的情况下是要删除的索引数组:

rdd.map{
  case (matrix, toDelete) => 
    toDelete.foldLeft(matrix){case (acc, index) => acc.delete(index, Axis._0)}
}

推荐阅读