[问题]将矩阵呈现的关系转为排序/ELECTRE II

楼主: innocent817 (Shawn纯真)   2014-08-15 23:28:01
[问题类型]:
程式咨询(我想用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的矩阵
因此无法像上面的例子用笔画一画就画出来
想请问版上大大会如何解决这个问题
感激不尽!
[程式范例]:
[关键字]:
作者: Wush978 (拒看低质媒体)   2014-08-16 21:33:00
我觉得这个可能有partial order set的问题耶也就是说,最后可能不存在一个合理的排列Anyway, 我没有看过解这种问题的实作,也许你要自己写
楼主: innocent817 (Shawn纯真)   2014-08-16 22:31:00
实际上有ELECTRE II的软件可以求出排序,但是因为不懂其排序的原理,因此无法在R上进行实作
作者: koai (可笑的自以为...)   2014-08-17 08:56:00
第二个矩阵[2,3]如果也会是1的话,可以考虑order(rowSums(A)order(rowSums(A),decreasing=TRUE)
楼主: innocent817 (Shawn纯真)   2014-08-17 12:42:00
可能没有办法,因为的确会出现W大说的部份排序问题
作者: cywhale (cywhale)   2014-08-21 01:58:00
现在问题是[i,j],[j,i]都可以等于1囉?

Links booklink

Contact Us: admin [ a t ] ucptt.com