2017-06-02 28 views
1

我有一個如下所示的文本文件。它包含6行的標題,然後只包含數字值(整數)。我想斌這些整數的範圍讓我們假設值是範圍爲0 ... 50,我想斌他們5個即紙槽0...10...20...30...40...50文件行中的Bin數字要優雅地分組

是否有某種優雅的方式來斌呢?

ncols 4 
nrows 3 
xllcorner 0 
yllcorner 0 
cellsize 1 
nodata_value -999 
1 2 3 4 
4 21 3 3 
3 2 31 1 

目前,我使用迭代器的文件的行,並使用掃描儀標記化一行內的值 - 這似乎相當笨拙。期待一些優雅的想法。

預計產量將

ncols 4 
nrows 3 
xllcorner 0 
yllcorner 0 
cellsize 1 
nodata_value -999 
1 1 1 1 
1 2 1 1 
1 1 3 1 

回答

0
object Test { 

    def main(args:Array[String]):Unit={ 
    val source = scala.io.Source.fromFile("/ssd2/test.txt") 
    val lines = source.getLines().toList 
    val (header, payload) = (lines.take(6), lines.drop(6)) 

    def classify(i:Int):Int = (i/10) + 1 

    val binned = payload.map{line => 
     line.split(" ").map(n => classify(n.toInt)).mkString(" ") 
    } 

    val result = header ++ binned 
    result.foreach(println(_)) 
    } 

} 

雖然輸出

ncols 4 
nrows 3 
xllcorner 0 
yllcorner 0 
cellsize 1 
nodata_value -999 
1 1 1 1 
1 3 1 1 
1 1 4 1 

我認爲你有一個小bug的預期輸出樣本。

相關問題