我有一个数据帧。有两列A和B。我想从矩阵中再加一列C,其中列A是I,列B是j。例如,假设我有
A B
1 3
2 2
我有一个矩阵
M:
1 3 0
2 4 5
2 1 6
新列C是第一行和累列,第二行和第二列:
A B C
1 3 0
2 2 4
我们可以将data.frame转换为矩阵,并将其用作行/列索引,从'M'中提取值,并将它分配给'df1'中的新列
df1['C'] <- M[as.matrix(df1)]
df1
# A B C
#1 1 3 0
#2 2 2 4
或者另一个选项是cbind
(默认情况下创建matrix
(从数据帧中提取的列
df1['C'] <- M[cbind(df1$A, df1$B)]
数据
df1 <- data.frame(A = 1:2, B = c(3, 2))
M <- cbind(c(1, 2, 2), c(3, 4, 1), c(0, 5, 6))