データフレームを使用して特定のペアごとの比較行列を作成したいと思います。このために私が持っている: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)の最終行列。
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
})
Finaly、 私は特定の形式で行列を命じ:
out3 = list()
for(i in seq(1,length(out2)))
{
out3[[i]]=as.vector(out2[[i]])
names=
paste(
rep(rownames(out2[[i]]),each=ncol(out2[[i]])),
rep(colnames(out2[[i]]),nrow(out2[[i]]))
,sep='_')
names(out3[[i]])=names
}
[[1]]
deltametrina_deltametrina deltametrina_fipronil deltametrina_imidaclopride
0 4 6
deltametrina_sulfluramida deltametrina_tiametoxam fipronil_deltametrina
2 8 4
fipronil_fipronil fipronil_imidaclopride fipronil_sulfluramida
0 2 2
fipronil_tiametoxam imidaclopride_deltametrina imidaclopride_fipronil
4 6 2
imidaclopride_imidaclopride imidaclopride_sulfluramida imidaclopride_tiametoxam
0 4 2
sulfluramida_deltametrina sulfluramida_fipronil sulfluramida_imidaclopride
2 2 4
sulfluramida_sulfluramida sulfluramida_tiametoxam tiametoxam_deltametrina
0 6 8
tiametoxam_fipronil tiametoxam_imidaclopride tiametoxam_sulfluramida
4 2 6
tiametoxam_tiametoxam
0
[[2]]
deltametrina_deltametrina deltametrina_fipronil deltametrina_imidaclopride
0 2 4
deltametrina_sulfluramida deltametrina_tiametoxam fipronil_deltametrina
6 8 2
fipronil_fipronil fipronil_imidaclopride fipronil_sulfluramida
0 2 4
fipronil_tiametoxam imidaclopride_deltametrina imidaclopride_fipronil
6 4 2
imidaclopride_imidaclopride imidaclopride_sulfluramida imidaclopride_tiametoxam
0 2 4
sulfluramida_deltametrina sulfluramida_fipronil sulfluramida_imidaclopride
6 4 2
sulfluramida_sulfluramida sulfluramida_tiametoxam tiametoxam_deltametrina
0 2 8
tiametoxam_fipronil tiametoxam_imidaclopride tiametoxam_sulfluramida
6 4 2
tiametoxam_tiametoxam
0
しかし、私は次のようにゼロなしで最終マトリズとダブルcomparasionを作成したいと思います:
[[1]]
- [deltametrina, fipronil, 4]
- [deltametrina, imidaclopride, 6]
- [deltametrina, sulfluramida, 2]
- [deltametrina, tiametoxam, 8]
- [fipronil, imidaclopride, 2]
- [fipronil, sulfluramida, 2]
- [fipronil, tiametoxam, 4]
- [imidaclopride, sulfluramida, 4]
- [imidaclopride, tiametoxam, 2]
- [sulfluramida, tiametoxam, 6]
[[2]]
- [deltametrina, fipronil, 2]
- [deltametrina, imidaclopride, 4]
- [deltametrina, sulfluramida, 6]
- [deltametrina, tiametoxam, 8]
- [fipronil, imidaclopride, 2]
- [fipronil, sulfluramida, 4]
- [fipronil, tiametoxam, 6]
- [imidaclopride, sulfluramida, 2]
- [imidaclopride, tiametoxam, 4]
- [sulfluramida, tiametoxam, 2]
これは可能ですか?ありがとう
はそんなにSandipanデイありがとうございました!! – Leprechault
@Leprechaultあなたは大歓迎です。 –