Я хотел бы создать определенные парные матрицы сравнения с использованием фреймов данных. Для этого у меня есть:Удаление сравнения нулей и doble в попарно конденсированной матрице
кадр данных с 5 продуктами (дельтаметрина, фипронил, имидаклоприд, 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
})
Финлей, я заказал матрицу в определенном формате:
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 вас приветствуют. –