将行向量与 R 中数据帧的每一行进行向量化比较?

mer*_*011 4 r vector

假设我有一个来自读取以下文件的数据框Foo.csv

A,B,C
1,2,3
2,2,4
1,7,3
Run Code Online (Sandbox Code Playgroud)

我想计算第一行和后续行之间匹配元素的数量。例如,第一行与第二行匹配一个位置,与第三行匹配两个位置。这是一些可以达到预期效果的代码。

foo = read.csv("Foo.csv")                      

numDiffs = rep(0,dim(foo)[1])                  
for (i in 2:dim(foo)[1]) {                     
   numDiffs[i] = sum(foo[i,] == foo[1,])       
}                                              
print(numDiffs)                                
Run Code Online (Sandbox Code Playgroud)

我的问题是,是否可以对其进行矢量化以终止循环并可能减少运行时间?我的第一次尝试如下,但它留下了一个错误,因为==没有为这种类型的比较定义。

colSums(foo == foo[1,])
Run Code Online (Sandbox Code Playgroud)

nac*_*dus 5

或者使用矩阵比较的自动回收:

bar <- as.matrix(foo)
c(0, rowSums(t(t(bar[-1, ]) == bar[1, ])))
# [1] 0 1 2
Run Code Online (Sandbox Code Playgroud)

t()是否有两次,因为回收是按列而不是按行。