我试图根据第一列过滤两个矩阵
a <- matrix(c("b", "s", "a", "w", "r", "te", "fds", "s", "h", "a", "df", "tyi"), nrow = 4)
colnames(a) <- c("fir", "sec", "thi")
fir sec thi
[1,] "b" "r" "h"
[2,] "s" "te" "a"
[3,] "a" "fds" "df"
[4,] "w" "s" "tyi"
b <- matrix(c("a","b","c","d", "e", "f", "g", "h", "i"), nrow = 3)
colnames(b) <- c("fir", "sec", "thi")
fir sec thi
[1,] "a" "d" "g"
[2,] "b" "e" "h"
[3,] "c" "f" "i"
基本上我想要做的是基于b [,1]中的命中的matrix a
子集
因此,matrix a
中的(row1,col1)和(row3,col1)与矩阵b中第1列中的某些值匹配,我想提取这两行。
我感谢任何提示和建议。谢谢。
此外,有人可以解释为什么这不起作用吗?
> c <- intersect(a[,1], b[,1])
> c
[1] "b" "a"
> a[a[,1]==c]
[1] "b" "r" "h"
答案 0 :(得分:3)
你可以试试这个,虽然可能有更优雅的方式来做到这一点。
matched <- a[,1] %in% b[,1]
a[matched,]