matchingR
matchingR copied to clipboard
Preserve the row and column names in the input matrix
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?
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