У меня есть матрица, H. Я хочу, чтобы выбрать значение из каждой строки, выбирая столбец вектора P.Подмножество матрицы в соответствии с вектором столбцы
H = matrix(data=runif(6),ncol=2)
P = c(2,1,2)
Выход я после того, как это вектор содержащий
c(H[1,P[1]],H[2,P[2]],H[3,P[3]])
Я работаю с большими данными, поэтому общий способ сделать это будет хорошо.
Это работает diag(H[,P])
, но: а) Я не понимаю, почему H[,P]
возвращает квадратную матрицу, и б) я бы предпочел не использовать дополнительную функцию (в данном случае diag
).
Приносим извинения, если это было задано ранее.
'Diag (Н [Р])' работает, потому что он добавляет столбцы до длины P перед вызовом 'diag' Это было бы менее эффективно для больших матриц. Ответ Дэвида ниже очень хороший. –