将 MxN 矩阵(M 行,N 列)写入 CSV 文件:
我的第一次尝试使用 map 有效,但创建了对 stringbuffer 的 N 个引用。它还在每行的末尾写了一个不必要的逗号。
def matrix2csv(matrix:List[List[Double]], filename: String ) = {
val pw = new PrintWriter( filename )
val COMMA = ","
matrix.map( row => {
val sbuf = new StringBuffer
row.map( elt => sbuf.append( elt ).append( COMMA ))
pw.println(sbuf)
})
pw.flush
pw.close
}
我的第二次尝试,使用 reduce,也有效,但看起来很笨重:
def matrix2csv(matrix:List[List[Double]], filename: String ) = {
val pw = new PrintWriter( filename )
val COMMA = ","
matrix.map( row => {
val sbuf = new StringBuffer
val last = row.reduce( (a,b)=> {
sbuf.append(a).append(COMMA)
b
})
sbuf.append(last)
pw.println(sbuf)
})
pw.flush
pw.close
}
关于更简洁和惯用的方法的任何建议?谢谢。
最佳答案
您可以轻松获取字符串表示形式:
val csvString = matrix.map{ _.mkString(", ") }.mkString("\n")
然后你只需要将它转储到一个文件中。
注意结束行(此处为 "\n"),它们因平台而异。
关于scala - Scala 中的 CSV 矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8053800/