作者innocent817 (Shawn純真)
看板R_Language
標題[問題]將矩陣呈現的關係轉為排序/ELECTRE II
時間Fri Aug 15 23:28:01 2014
[問題類型]:
程式諮詢(我想用R 做某件事情,但是我不知道要怎麼用R 寫出來)
[軟體熟悉度]:
入門(寫過其他程式,只是對語法不熟悉)
[問題敘述]:
想將矩陣呈現的關係轉為排序
[,1] [,2] [,3]
[1,] 0 1 1
[2,] 0 0 0
[3,] 0 1 0
以上面這個矩陣為例,這是一個兩兩比較關係的方陣
[1,2]=1表示1優於2,[1,3]=1表示1優於3,[3,2]=1表示3優於2
因此綜合上面三個:1優於3優於2
想得到的排序應該為1 3 2
以另一個矩陣解釋
[,1] [,2] [,3]
[1,] 0 0 1
[2,] 1 0 0
[3,] 0 0 0
即2優於1優於3,想得到的排序應為2 1 3
我原本想用R進行ELECTRE II的模擬實驗,可是R裡面沒有ELECTRE II的package
只有'MCDA'裡的ELECTRE TRI(另一個版本,差異頗大)
因此想說自己寫一個簡易版,可是到最後一個步驟怎麼也無法將矩陣轉為排序
實際上會排序的數量會有100個,也就是100*100的矩陣
因此無法像上面的例子用筆畫一畫就畫出來
想請問版上大大會如何解決這個問題
感激不盡!
[程式範例]:
[關鍵字]:
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.36.203.4
※ 文章網址: http://www.ptt.cc/bbs/R_Language/M.1408116483.A.B67.html
※ 編輯: innocent817 (114.36.203.4), 08/16/2014 00:45:56
推 Wush978: 我覺得這個可能有partial order set的問題耶 08/16 21:33
→ Wush978: 也就是說,最後可能不存在一個合理的排列 08/16 21:33
→ Wush978: Anyway, 我沒有看過解這種問題的實作,也許你要自己寫 08/16 21:33
→ innocent817: 實際上有ELECTRE II的軟體可以求出排序,但是因為不 08/16 22:31
→ innocent817: 懂其排序的原理,因此無法在R上進行實作 08/16 22:32
推 koai: 第二個矩陣[2,3]如果也會是1的話,可以考慮order(rowSums(A) 08/17 08:56
推 koai: order(rowSums(A),decreasing=TRUE) 08/17 08:58
→ innocent817: 可能沒有辦法,因為的確會出現W大說的部份排序問題 08/17 12:42
推 cywhale: 現在問題是[i,j],[j,i]都可以等於1囉? 08/21 01:58