2016-12-30 9 views
-1

ルールでペアワイズ比較行列を作成し、その結果をリスト形式にしたいと考えています。 5つの製品(deltametrina、フィプロニル、imidaclopride、sulfluramida、tiametoxam)と2つのinvidualsノート(Indv)今 ルールでリスト形式の比較行列を作成する

Indv<-c(1,2)  
deltametrina<-c(1,1)  
fipronil<-c(5,3)  
imidaclopride<-c(7,5) 
sulfluramida<-c(3,7) 
tiametoxam<-c(9,9) 
DF<-cbind(Indv,deltametrina,fipronil,imidaclopride,sulfluramida,tiametoxam) 
DF 

データフレームを、ための一対比較行列、私のルールを作成します。このために私が持っています各変数の最高値から小さな数値を差し引いた変数です。しかし、各個体(Indv)の最終行列は、リストオブジェクト内のベクトルでなければなりません。

[[1]] 

       deltametrina fipronil imidaclopride sulfluramida tiametoxam 
deltametrina   1   4   6    2   8 
fipronil    NA  1   2    2   4 
imidaclopride  NA  NA   1    4   2 
sulfluramida   NA  NA   NA    1   6 
tiametoxam   NA  NA   NA    NA   1 



[[2]] 

       deltametrina fipronil imidaclopride sulfluramida tiametoxam 
deltametrina   1   2   4    2   8 
fipronil    NA  1   4    4   6 
imidaclopride  NA  NA   1    2   4 
sulfluramida   NA  NA   NA    1   2 
tiametoxam   NA  NA   NA    NA   1 

これが可能である:

私の出力は次のようになりますか?

おかげ

+0

なぜ対角線上の1つのがあるのですか?彼らはゼロではないでしょうか? – bouncyball

+0

出力を生成するコードはどこですか?そして、望みの結果は何ですか? – Parfait

+0

バウンスボール:1の0に変換する必要があります。 – Leprechault

答えて

1

これは、あなたが始めるのに役立つかもしれない...

df <- as.data.frame(t(DF[, -1])) 
out <- lapply(df, function(x) outer(x, x, function(x, y) abs(x-y))) 
out2 <- lapply(out, function(m) { 
    dimnames(m) <- list(rownames(df), rownames(df)) 
    m 
}) 
out2 
+0

ありがとうJean、そんなに助けて! – Leprechault

関連する問題