Open msunij opened 3 years ago
This sounds reasonable in general.
Could you provide a concrete example with the desired output, please?
Since we're relying more and more on tidyverse
let me show an example beginning with a tibble.
library(tidyverse)
library(matchingR)
set.seed(100)
pref <- expand_grid(college = LETTERS[1:5],
student = letters[1:7]) %>%
mutate(college_score = round(rnorm(nrow(.)), 2),
student_score = round(rnorm(nrow(.)), 2))
college_score <- pref %>%
select(-student_score) %>%
pivot_wider(names_from = college, values_from = college_score) %>%
column_to_rownames(var = "student") %>%
as.matrix()
student_score <- pref %>%
select(-college_score) %>%
pivot_wider(names_from = student, values_from = student_score) %>%
column_to_rownames(var = "college") %>%
as.matrix()
matched <- galeShapley.collegeAdmissions(studentUtils = student_score,
collegeUtils = college_score,
slots = 2)
The input matrices looks like the following
> college_score
A B C D E
a 1.66 0.38 0.17 1.02 -0.64
b 0.28 1.08 -0.44 -1.88 0.49
c 1.21 -0.21 -1.66 -0.56 -0.32
d -1.16 0.15 0.43 -0.51 0.35
e -0.39 0.13 0.77 0.57 1.16
f -1.03 1.28 0.01 1.94 -0.32
g 0.06 2.67 -1.48 -1.22 0.44
> student_score
a b c d e f g
A 1.12 1.40 0.74 -1.76 0.72 1.56 -0.88
B -1.42 -0.68 1.99 1.29 0.67 -1.57 -1.23
C 0.25 -0.13 -0.06 -0.93 -0.49 -0.04 1.27
D -0.36 0.37 1.54 1.71 -0.26 -0.50 2.15
E -0.54 -1.18 -0.02 -0.24 -0.43 -0.25 1.66
Now the output from the matching algorithm looks like the following
> matched$matched.colleges
[,1] [,2]
[1,] 7 NA
[2,] 4 6
[3,] 5 NA
[4,] 3 2
[5,] 1 NA
As you can see it doesn't use the rownames or colnames attached to the input matrices. The desired output would be something like this
> matched$matched.colleges
slot_1 slot_2
A "g" NA
B "d" "f"
C "e" NA
D "c" "b"
E "a" NA
The output from the algorithm doesn't preserve the row and column names associated with the input matrices, can you please add an option to keep them?