Escribir una matriz MxN (M filas, N columnas) a un archivo CSV:Matrix a CSV en Scala
Mi primer intento, en el mapa, funciona, pero crea N referencias a la StringBuffer. También escribe una coma innecesaria al final de cada fila.
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
}
Mi segundo intento, utilizando reducir, también funciona, pero se ve torpe:
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
}
Cualquier sugerencia en un enfoque más concisa e idiomático? Gracias.
¿Cómo se obtiene el segundo intento de compilación? En 'sbuf.append (b)', no hay 'b' en el alcance. –
Gracias Ben. Solucionado eso. –