R matchingMarkets::hri()在x[y]中出错:下标类型无效';列表';

R matchingMarkets::hri()在x[y]中出错:下标类型无效';列表';,r,algorithm,graph,syntax-error,matching,R,Algorithm,Graph,Syntax Error,Matching,我尝试使用RmatchingMarkets::hri()中的Gale Shapely算法,根据他们的偏好和每组的容量限制,将10名学生(A-J)分配到6个组(1-6)。每个学生将他们的前3个选项按组排列,其他所有选项均为空。我的问题是 > hri(nSlots=capacities$capacity, s.prefs = student_prefs_matrix, c.prefs = null_matrix) 返回以下内容: x[y]中的错误:无效的下标类型“列表” hri()确实允许缺

我尝试使用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)
返回以下内容: x[y]中的
错误:无效的下标类型“列表”

hri()
确实允许缺少值,根据(这不同于类似的
matchingR::galeShapely.collegeAdministrations()
),因此这不是问题所在。我将我的输入与文档(第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适用于双面匹配,但我认为如果我总是寻找“学生最佳”匹配,这可能会奏效。谢谢你的帮助!这是我第一次在这里发布问题。

要解决您的问题,请确保以适当的格式提供首选项列表。有关这方面的几个示例,请参阅位于的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
> 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 ...