2017-11-16 5 views
2

Q-行列の質問に取り組んでおり、ハミング距離を計算する必要があるため、異なる行(ベクトルとして)の問題がdataframe Adataframe Bの同じ行に移動します。データフレームAから異なる行をループしてデータフレームBの同じ個別の行に適用します

具体的には、df2は6x3データフレームであり、df1は3x3データフレームです。 1ベクトル・ペア(それべき出力3ハミング距離値のみを) -

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)) 

私はすべての6ベクトルのハミング距離を計算するために、df1順次に行毎にベクトルとしてdf2からすべての6行を適用する必要があります。例えば、df1の第1行目は(1,0,1)で、のすべての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の行を他のベクトルとの他の計算を行うことができるベクトルとしてどのように出力するかもわかりません。誰でも助けてくれますか?

答えて

1

これは動作するはずです:そんなに

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

[1] 6 
[1] 8 
[1] 8 
+0

感謝を。これは本当に役に立ちます;-) –

関連する問題