2015-06-29 82 views
0

假設我有一個形式爲Seq[Array[String]]的二維數組,其中第一個索引顯示了行。第一行始終是標題行。目標是過濾出那些空標題的列。例如,如果表的內容是(由3 3,與第一行標題):刪除二維數組中的某些列的功能方式

, t, 
a, c, e 
b, d, f 

val table = Seq(Array("", "t", ""), Array("a", "c", "e"), Array("b", "d", "f")) 

這裏所期望的輸出,收集空標題後

t 
c 
d 

filter一個數組很容易,但這裏的硬度在於,需要根據標題行過濾所有數組。任何想法如何做到這一點?

回答

4

嘗試:做這個

val indices = table.head.zipWithIndex 
        .filter { case (t, i) => t != "" } 
        .map { case (t, i) => i } 
table.map(indices collect _) 
// > res: Seq[Array[String]] = List(Array(t), Array(c), Array(d)) 
+0

可以更換.filter(..)地圖(..)跟單。蒐集 –

2

一種方法是使用transpose操作:

table.transpose.filterNot(_.head.isEmpty) 
> Seq[Seq[String]] = List(List(t, c, d))