2011-10-26 42 views
1

我有一個用戶配置文件的以下標準:F# - 矩陣復治​​

標準1:

1 =曼

2 =女子

3 =未知

準則2:

1 =是

2 =否

標準3:

1 =是

2 =否

3 =未知

我有以下是來自SQL的矩陣:Matrix「User1」[[3.; 1.; 2。]](未知性別/是/否)

我想找到一個代碼,即可獲得以下再治療,如果添加了新的標準(黑客帝國「用戶1」多一個列從SQL,可以工作):

結果:[ 0.; 0.; 1.; 1.; 0.; 0.; 1.; 0。]]

這是[[Man; Woman; Unknown; Yes to Criteria2; No to Criteria 2; Yes to Criteria3; No to Criteria3; Unknown to Criteria3]]

+0

看看你的最後一個例子,由於元素排序的方式,我沒有看到沒有提供行數的方法。那可能嗎? – Daniel

回答

1

你喜歡這種嗎?

//> conv [[3.;1.;2.]] ;; 
//val it : float list list = [[0.0; 0.0; 1.0; 1.0; 0.0; 0.0; 1.0; 0.0]] 
let conv data = 
    let [[a:float;b;c]] = data 
    let C1 = Array.create 3 0. 
    let C2 = Array.create 2 0. 
    let C3 = Array.create 3 0. 
    C1.[int a - 1] <- 1.0 
    C2.[int b - 1] <- 1.0 
    C3.[int c - 1] <- 1.0 
    [ Array.concat [| C1; C2; C3 |] |> Array.toList] 
+0

謝謝是的,它看起來像一個很好的方式來做到這一點! – katter75