【发布时间】:2017-09-27 19:04:29
【问题描述】:
我正在尝试使用 R matchingMarkets::hri() 中的 Gale-Shapely 算法,根据他们的喜好将 10 名学生 (A-J) 分配到 6 个组 (1-6),并受每个组的容量限制。每个学生对小组的前 3 个选项进行排名,所有其他选项均无效。我的问题是
> hri(nSlots=capacities$capacity, s.prefs = student_prefs_matrix, c.prefs = null_matrix)
返回:
Error in x[y] : invalid subscript type 'list'
hri() 确实允许缺失值,根据documentation(这与类似的matchingR::galeShapely.collegeAdmissions() 不同),所以这不是问题所在。我将我的输入与文档(第 7 页)中的示例和所有相同类型的结构进行了比较。这是我的输入:
> student_prefs_matrix
a b c d e f g h i j
1 3 1 NA NA NA NA NA NA NA NA
2 NA NA 3 NA NA 3 3 2 2 2
3 NA NA NA NA 1 2 NA NA 1 3
4 1 3 NA 3 NA NA NA NA NA NA
5 NA 2 2 1 3 1 1 1 3 1
6 2 NA 1 2 2 NA 2 3 NA NA
> null_matrix
1 2 3 4 5 6
a NA NA NA NA NA NA
b NA NA NA NA NA NA
c NA NA NA NA NA NA
d NA NA NA NA NA NA
e NA NA NA NA NA NA
f NA NA NA NA NA NA
g NA NA NA NA NA NA
h NA NA NA NA NA NA
i NA NA NA NA NA NA
j NA NA NA NA NA NA
> capacities$capacity
[1] 2 2 2 2 1 1
谁能提示这个错误可能意味着什么?我给出的唯一列表(向量)是nSlots,它应该是一个列表。或者,有没有更好的方法来解决这个匹配问题?我知道 Gale Shapely 是为 2 面匹配而设计的,但我认为如果我总是寻找“学生最佳”匹配,这无论如何都可以工作。谢谢您的帮助!这是我第一次在这里发帖。
【问题讨论】:
标签: r algorithm graph syntax-error matching