如何根据列中的常用值过滤两个矩阵?

时间:2014-07-16 20:31:37

标签: r matrix

我试图根据第一列过滤两个矩阵

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"

1 个答案:

答案 0 :(得分:3)

你可以试试这个,虽然可能有更优雅的方式来做到这一点。

matched <- a[,1] %in% b[,1]
a[matched,]