作者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://webptt.com/cn.aspx?n=bbs/R_Language/M.1408116483.A.B67.html
※ 编辑: innocent817 (114.36.203.4), 08/16/2014 00:45:56
1F:推 Wush978: 我觉得这个可能有partial order set的问题耶 08/16 21:33
2F:→ Wush978: 也就是说,最後可能不存在一个合理的排列 08/16 21:33
3F:→ Wush978: Anyway, 我没有看过解这种问题的实作,也许你要自己写 08/16 21:33
4F:→ innocent817: 实际上有ELECTRE II的软体可以求出排序,但是因为不 08/16 22:31
5F:→ innocent817: 懂其排序的原理,因此无法在R上进行实作 08/16 22:32
6F:推 koai: 第二个矩阵[2,3]如果也会是1的话,可以考虑order(rowSums(A) 08/17 08:56
7F:推 koai: order(rowSums(A),decreasing=TRUE) 08/17 08:58
8F:→ innocent817: 可能没有办法,因为的确会出现W大说的部份排序问题 08/17 12:42
9F:推 cywhale: 现在问题是[i,j],[j,i]都可以等於1罗? 08/21 01:58