如何使用矩阵从数据框中提取值?

how to use a matrix to extract values from a dataframe?

假设我有一个数据框,其中 2 列是 A 和 B。A 和 B 可以取 1 到 150 之间的值。我有一个 150 * 150 矩阵。我想要一个新列,它是 A 行和 B 列中矩阵的一个元素。

示例:假设矩阵是 2*2 而不是 150*150

数据框 D:

    A        B
    1        2
    2        1

矩阵M:

       13      12
       2        4

新专栏:

        C
        12
        2

我们可以将 data.frame 用作 matrix 并将其用于子集化。在这里,"D" 一旦转换为 matrix 作为 row/column 索引 return 来自 'M'

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

数据

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))

您可以尝试转置代码 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