我在Scala中使用Breeze库进行矩阵操作。一切看起来都不错,但在编译时无法找到隐含的内容:
could not find implicit value for parameter bf: breeze.linalg.support.CanMapValues[breeze.linalg.Matrix[Int],Int,Double,That]
违规功能是:
import breeze.linalg._ // this is the only import
def writeMatrixToCsv(path: String, matrix: Matrix[Int]) = csvwrite(new File(path), matrix.mapValues(_.toDouble), separator = ',')
我不知道如何继续 - 我在Breeze代码中查找了默认的CanMapValues但却找不到它。我怎么解决这个问题?谢谢!
答案 0 :(得分:0)
要解决该问题,您可以向CanMapValues
函数添加writeMatrixToCsv
类型的隐式参数。然后它会编译。我可以看到Matrix
是一个特征,它不提供一般隐式CanMapValues
,因此您可能必须为具体矩阵提供一个,您将使用它。
def writeMatrixToCsv(path: String, matrix: Matrix[Int])(
implicit bf:support.CanMapValues[Matrix[Int], Int, Double, Matrix[Double]]
) = csvwrite(
new File(path),
matrix.mapValues(_.toDouble),
separator = ','
)
CanMapValues位于support
package object