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

时间:2020-01-23 20:11:11

标签: r dataframe matrix extract

假设我有一个数据帧,其中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

2 个答案:

答案 0 :(得分:1)

我们可以将data.frame用作matrix并将其用于子集。在这里,“ D”一旦转换为matrix,就用作行/列索引,以从'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))

答案 1 :(得分:1)

您可以尝试使用转置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
相关问题