R 如何使用矩阵从数据帧中提取值?
假设我有一个数据框,其中有两列是a和B。a和B可以取1到150之间的值。我有一个150*150的矩阵。我想要一个新的列,它是a行和B列中矩阵的一个元素 示例:假设矩阵是2*2,而不是150*150 数据帧D: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
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您可以使用transposet()尝试代码
它如何知道什么是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