У меня есть две матрицы, одна со значениями интереса, а другая с индексами, соответствующими столбцам в первой. Приведенный ниже код делает то, что я хочу, но его нужно будет запускать на гораздо больших матрицах и много-много раз. Моя интуиция говорит мне, что может быть более быстрый способ выполнить это, поэтому любые мысли будут оценены.
set.seed(0)
y = matrix(runif(20), 4, 5)
idx = matrix(sample(1:5, 12, replace = T), 4, 3)
z = lapply(1:nrow(y), function(i) y[i, idx[i,]])
z = do.call(rbind, z)