【问题标题】:R matchingMarkets::hri() Error in x[y] : invalid subscript type 'list'R matchingMarkets::hri() x[y] 中的错误:无效的下标类型“列表”
【发布时间】: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


    【解决方案1】:

    要解决您的问题,请确保以适当的格式提供首选项列表。有关这方面的几个示例,请参阅 https://matchingmarkets.org/hri.html 上的 matchingMarkets 包的文档。

    让我们看一个例子,有 7 名学生,2 所大学,每所大学有 3 个名额,并给出如下偏好列表:

    > s.prefs <- matrix(c(1,2, 1,2, 1,NA, 1,2, 1,2, 1,2, 1,2), 2,7)
    > c.prefs <- matrix(c(1,2,3,4,5,6,7, 1,2,3,4,5,NA,NA), 7,2)
    > hri(s.prefs=s.prefs, c.prefs=c.prefs, nSlots=c(3,3))
    
    > s.prefs
         [,1] [,2] [,3] [,4] [,5] [,6] [,7]
    [1,]    1    1    1    1    1    1    1
    [2,]    2    2   NA    2    2   NA   NA
    
    > c.prefs
         [,1] [,2]
    [1,]    1    1
    [2,]    2    2
    [3,]    3    4
    [4,]    4    5
    [5,]    5   NA
    [6,]    6   NA
    [7,]    7   NA
    

    对于您对首选项列表的规范,有两个问题。最明显的问题是您的college_prefs_matrix,目前表明没有一所大学认为任何学生都可以接受。因此不可能存在稳定的匹配。另一个问题在您的student_prefs_matrix 中。在您的示例中,学生a 发现大学461 可接受(按此顺序)。因此,偏好列表应该是:

    > student_prefs_matrix
          a  b  c  d ...
    [1,]  4  1  6  5 ...
    [2,]  6  5  5  6 ...
    [3,]  1  4  2  4 ...
    [4,] NA NA NA NA ...
    [5,] NA NA NA NA ...
    [6,] NA NA NA NA ...
    

    【讨论】:

      猜你喜欢
      • 2017-10-05
      • 2015-11-01
      • 1970-01-01
      • 2012-01-06
      • 2017-02-06
      • 1970-01-01
      • 2013-06-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多