循环数据框 A 中的不同行并将它们应用于数据框 B 中的相同行

loop different rows from dataframe A and apply them to the same individual rows in dataframe B

因为我正在研究 Q 矩阵问题并需要计算汉明距离,所以我遇到了从 dataframe Adataframe B 中的同一行的不同行(作为向量)的问题。

具体来说,df2 是一个 6x3 数据帧,df1 是一个 3x3 数据帧。

    df1 <- data.frame(Q1= c(1,0,1), Q2= c(0,0,0), Q3= c(1,1,0))
    df2 <- data.frame(A =c(1,1,0,1,1,0), B =c(0,0,0,1,1,0), C =c(0,1,0,1,1,1))

我需要将 df2 中的所有 6 行作为向量依次应用到 df1 中的每一行,以便计算所有 6 个向量 - 1 个向量对的汉明距离(它应该输出 3 个汉明仅距离值)。例如,df1 中的第一行 (1,0,1) 应该与 df2 中的所有 6 行配对,包括 (1,0,0),(1,0,1),(0,0,0),(1,1,1),(1,1,1),(0,0,1) 并产生 1 个汉明距离值。按照同样的逻辑,这个类似的过程应该给出3个汉明距离值。

我用 double for() loop 尝试了几次,但没有成功。事实上,我什至不知道我们如何从 dataframe 打印出一行作为一个向量,可以用其他向量进行其他计算。有人可以帮忙吗?

这应该有效:

for(i in 1:nrow(df1)){
  print(sum(apply(df2,1,function(x) x!=df1[i,])))
  }

[1] 6
[1] 8
[1] 8