Замена значений в столбцах матрицы в соответствии с вектором индексов? - PullRequest
2 голосов
/ 01 ноября 2019

У меня есть матрица нулей:

M <- matrix(0, nrow = 10, ncol = 5)

и вектор индексов

V <- c(1,5,3,2,3,4,1,3,2,4)

Я хочу заменить записи M[i,V[i]] на 1, я в 1:10,Как я могу сделать это без использования грубой силы (для цикла)? Ниже приведен код для этого с использованием грубой силы, которая неэффективна в более высоких измерениях:

for(i in 1:10) M[i,V[i]] = 1

1 Ответ

3 голосов
/ 01 ноября 2019

Вы можете сделать матрицу из вашего вектора V и использовать ее напрямую, т.е.

M[matrix(c(seq_along(V), V), ncol = 2)] <- 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...