Поскольку выборочных данных нет, я сделал следующее:
set.seed(123)
raters <- paste0('rater', 1:28)
targets <- paste0('target', 1:28)
dat <- matrix(runif(28 * 28), ncol = 28, dimnames = list(raters, targets))
Вы можете создать 2-комбинации целей с помощью функции combn
:
combos <- combn(targets, 2, simplify=FALSE)
Теперь выможет создать список матриц, каждый с 2 столбцами, выбранными из комбинаций:
dyads <- lapply(combos, function(x) dat[,x])
Имена столбцов каждой матрицы в диадах - это интересующая вас комбинация target_x, target_y, так что для возврата именицель с более высоким рейтингом, вы можете сделать это:
upper_rating <- lapply (dyads, function (y) colnames (y) [apply (y, 1, function (x) which.max (x))]) </p>
Чтобы получить список более высоких рейтингов вместе со сравниваемыми целями, вы объединяете сравниваемые цели в одну строку, а затем связываете это с более высокими рейтингами, созданными выше:
cc <- lapply(combos, paste, collapse='_')
final<- lapply(1:NROW(higher_rating),
function(i) {
x <- cbind(higher_rating[[i]], cc[[i]]);
rownames(x) <- raters;
x
})
head(final, 1)
[[1]]
[,1] [,2]
rater1 "target2" "target1_target2"
rater2 "target1" "target1_target2"
rater3 "target2" "target1_target2"
rater4 "target2" "target1_target2" ...
Я уверен, что есть менее неуклюжие способы сделать это.