R i和j相等的实例计数

R i和j相等的实例计数,r,count,multiple-columns,R,Count,Multiple Columns,我试图获得两列中的值相等的实例数。然而,我的方程式不起作用 有人能指出哪里错了吗 count<-0 for (i in 1:length(v1)){ for (j in 1:length(v2)){ if (i == j){ count <- count+ 1 } } } count这是因为您比较的是索引(i==j),而不是每个单元格的内容(v1[i]和v2[j])。你应该这样写: count<-0 for (i in 1:length

我试图获得两列中的值相等的实例数。然而,我的方程式不起作用

有人能指出哪里错了吗

count<-0 
for (i in 1:length(v1)){
  for (j in 1:length(v2)){
    if (i == j){
      count <- count+ 1 }
  }
}

count这是因为您比较的是索引(i==j),而不是每个单元格的内容(v1[i]和v2[j])。你应该这样写:

    count<-0 
for (i in 1:length(v1))
{
    for (j in 1:length(v2))
    {
        if (v1[i] == v2[j])
        {
            count <- count+ 1 
        }
    }
}

count我不太清楚你在问什么。如果您在一个数据帧中有两列,并且您想知道这些值有多少次是相同的,那么这是可行的

a<-1:10
b<-c(2,2,4,2,5,6,1,2,9,10)
df<-data.frame(a,b)

sum(df$a == df$b)   #[1] 5
a一些示例数据:

set.seed(42)
v1 <- sample(0:1, 3, TRUE)
#[1] 1 1 0
v2 <- sample(0:1, 3, TRUE)
#[1] 1 1 1

请注意,此解决方案将比双
for
循环快得多。但是,它需要更多的内存,这可能会成为大型向量的问题(因为它计算的矩阵随向量长度的平方增长)。

目前来看,这太广泛了。什么是
v1
?什么是
v2
?期望的结果是什么?请将这些添加到您的帖子中。为什么更简单的方法不是:
min(长度(v1),长度(v2))
。此外,代码适用于长度不等的两个向量。
sum(i==j)
cumsum(i==j)
实际上是我的猜测。Alex,我将取
sum(v1%in%v2)
200。列是什么无关。关键是我想对它们相等的实例求和。sum.mether不需要创建数据帧。总和(a==b)就足够了。
sum(outer(v1, v2, "=="))
#[1] 6