Scrivere una matrice MxN (M righe, N colonne) in un file CSV:Matrix al CSV in Scala
Il mio primo tentativo, usando la mappa, funziona, ma crea N riferimenti al StringBuffer. Scrive inoltre una virgola non necessaria alla fine di ogni riga.
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
}
Il mio secondo tentativo, utilizzando ridurre, anche funziona, ma sembra goffo:
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
}
Qualche suggerimento su un approccio più conciso e idiomatica? Grazie.
Come si ottiene il secondo tentativo di compilazione? In 'sbuf.append (b)', non c'è 'b' in scope. –
Grazie Ben. Risolto il problema. –