循环数据框 A 中的不同行并将它们应用于数据框 B 中的相同行
loop different rows from dataframe A and apply them to the same individual rows in dataframe B
因为我正在研究 Q 矩阵问题并需要计算汉明距离,所以我遇到了从 dataframe A
到 dataframe 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
因为我正在研究 Q 矩阵问题并需要计算汉明距离,所以我遇到了从 dataframe A
到 dataframe 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