Я полностью повторяю этот ответ:
В R вам не нужно перебирать матрицы или data.frames.R работает по своей векторизации.Итак, давайте выберем правильный столбец с вектором.
Чтобы выбрать в качестве матрицы из матрицы, мы должны установить подмножество с матрицей.Сравните следующее.vals
- это подмножество значений, которые вы хотите «объединить»:
vals <- as.matrix(y[,3:9])
vals[y[,2]]
и сравнить с cbind (1: nrow (vals), y [, 2]) vals [x]
Видите ли вы разницу?
Теперь соедините правильные строки:
vals <- as.matrix(y[,3:9])
x <- cbind(1:nrow(vals), y[,2])
cbind(y[,1:2], vals[x])
Или слегка улучшенное издание:
x <- cbind(1:nrow(y), y[,2]+2)
cbind(y[,1:2], y[x])