我有一个矩阵:
A = matrix(1:20,nrow = 5,ncol = 4,byrow = TRUE)
和一个向量:
B = c(1,4,11,14,15,20)
我想在这些条件下从每一行获取一个值: 如果A的一行与B有多个匹配项,则只取该行中的第一个匹配项; 如果A的一行只有一个匹配,则取这个匹配的值; 如果 A 的某一行没有匹配项,则取该行的第 1 列。 因此,预期结果附加在 A 的最后一列(作为数据框)。
V1 V2 V3 V4 result
1 1 2 3 4 1
2 5 6 7 8 5
3 9 10 11 12 11
4 13 14 15 16 14
5 17 18 19 20 20
感谢您的帮助!
data.frame(A, result=A[cbind(seq_len(nrow(A)), max.col(array(A %in% B, dim(A)), 'first'))])
X1 X2 X3 X4 result
1 1 2 3 4 1
2 5 6 7 8 5
3 9 10 11 12 11
4 13 14 15 16 14
5 17 18 19 20 20