如何使用矩阵从数据框中提取值?
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
假设我有一个数据框,其中 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