【问题标题】:Count number of same elements in the same position in two vectors计算两个向量中相同位置的相同元素的数量
【发布时间】:2014-09-11 10:35:17
【问题描述】:

我有两个向量:

set.seed(12)

a<-sample(c(0,1),10,replace=T)

b<-sample(c(0,1),10,replace=T)

> a
 [1] 0 1 1 0 0 0 0 1 0 0
> b
 [1] 0 1 0 0 0 0 0 1 1 0

我想计算两个向量中匹配的元素个数。

所以在上述情况下:

以下元素匹配:1,2,4,5,6,7,8,10。

我不能对集合运算符执行此操作,因为我对公共元素不感兴趣,也不对它们的位置感兴趣。

【问题讨论】:

    标签: r


    【解决方案1】:

    尝试使用which==

    which(a==b)
    #[1]  1  2  4  5  6  7  8 10
    

    使用@David Arenburg 的示例

     set.seed(12)
     a <- sample(c(0,1),10,replace=TRUE)
     b <- sample(c(0,1),10,replace=TRUE)
     c <- sample(c(0,1),10,replace=TRUE) # added
    
     which(rowSums(cbind(a,b,c)==a)==3)
    #[1] 1 2 5 6
    

    【讨论】:

    • @Andrie 抱歉,我早了几秒 :-)
    • 如果目标真的是计算两个向量中匹配的元素数量,那么我们建议使用sum(a == b) 而不是length(which(a == b)).
    • @Pascal 非常感谢编辑,复制粘贴时没有注意到是我的错。
    猜你喜欢
    • 2012-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-02
    • 1970-01-01
    • 2015-04-18
    • 2019-11-24
    • 2018-03-10
    相关资源
    最近更新 更多