Как использовать матрицу для извлечения значений из кадра данных? - PullRequest
1 голос
/ 23 января 2020

предположим, у меня есть фрейм данных, в котором 2 столбца - это A и B. A и B могут принимать значения от 1 до 150. и у меня матрица 150 * 150. Я хочу новый столбец, который является элементом матрицы в строке A и столбце B.

Пример: предположим, что матрица 2 * 2 вместо 150 * 150

фрейм данных D:

    A        B
    1        2
    2        1

Матрица М:

       13      12
       2        4

новый столбец:

        C
        12
        2

Ответы [ 2 ]

1 голос
/ 23 января 2020

Вы можете попробовать код с транспонированием t()

D$C <- M[t(t(D))]

или

D$C <- M[cbind(D$A, D$B)]

таким, что

> D
  A B  C
1 1 2 12
2 2 1  2
1 голос
/ 23 января 2020

Мы можем использовать data.frame как matrix и использовать его для поднабора. Здесь «D», однажды преобразованная в matrix, действует как индекс строки / столбца, возвращая элементы из «M»

D$C <- M[as.matrix(D)]
D
#  A B  C
#1 1 2 12
#2 2 1  2

data

D <- structure(list(A = 1:2, B = 2:1), class = "data.frame", 
     row.names = c(NA, -2L))
M <- cbind(c(13, 2), c(12, 4))
...