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

R 如何使用矩阵从数据帧中提取值?,r,dataframe,matrix,extract,R,Dataframe,Matrix,Extract,假设我有一个数据框,其中有两列是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用作矩阵,

假设我有一个数据框,其中有两列是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
用作
矩阵
,并将其用于子集设置。在这里,“D”一旦转换为
矩阵
就充当行/列索引,从“M”返回元素

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

D$C您可以使用transpose
t()尝试代码


它如何知道什么是A和B?@hghg它是基于索引的。在第一列“A”中,我猜它是行索引,在“B”中,它是列索引index@hghg在这里,我正在转换整个数据集“D”,它只包含两列“A”和“B”@hghg如果您有一个列数更多的data.frame,则将列子集,即
M[as.matrix(D[c(“A”,“B”)])]
如果您想以任何方式改变它,请使用
M[cbind(D$A,D$B)]
@akrun yes,addedit@hghg你用了哪种方法?
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))
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