R: Доступ к элементам 2D матрицы с векторами индексов - PullRequest
1 голос
/ 12 апреля 2020

Предположим, у меня есть матрица 3 × 15 «фи», и я хочу создать вектор записей из фи, соответствующий комбинации i, j, где i - вектор длины 900 из чисел 1: 3, а j - длина 900 вектор чисел 1:15. Другими словами, я хочу, чтобы вектор длины фи составлял 900, где первым элементом является phi [i [1], j [1]], вторым элементом будет phi [i [2], j [2]], et c.

Моя первоначальная мысль была phi_list <- phi[i, j], но, похоже, она возвращает каждую комбинацию значений i, j. Итак, как бы я go о создании такого вектора?

Спасибо за любую помощь!

1 Ответ

1 голос
/ 12 апреля 2020

В этом случае мы можем использовать индекс как matrix с i для индекса строки и 'j' для индекса столбца

phi[cbind(i, j)]
#[1]  6 18 35

Если мы используем i и j векторов в 'i', и 'j' вернет matrix, включив строки и столбцы, включенные в индекс, вместо выбора элементов, соответствующих местоположению

data

set.seed(24)
phi <- matrix(1:50, 5, 10)
i <- c(1, 3, 5)
j <- c(2, 4, 7)
...