简体   繁体   English

通过列表格式的规则创建成对比较矩阵

[英]Create a pairwise comparison matrices by a rule in list format

I'd like to create a pairwise comparison matrices by a rule and put the results in list format.我想通过规则创建成对比较矩阵,并将结果以列表格式显示。 For this I have:为此,我有:

Data frame with 5 products (deltametrina,fipronil,imidaclopride,sulfluramida,tiametoxam) and 2 inviduals notes (Indv)包含 5 个产品(溴氰菊酯、氟虫腈、吡虫啉、氟虫胺、噻虫嗪)和 2 个个体笔记 (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

Now, for create a pairwise comparison matrices, my rule is the variable with highest value minus smaller numeric number of each variable.现在,为了创建成对比较矩阵,我的规则是具有最高值的变量减去每个变量的较小数字。 But final matrix for each individual (Indv), must to be a vector in a list object.但是每个人的最终矩阵 (Indv) 必须是列表对象中的向量。

My output looks like:我的输出看起来像:

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

This is possible?这个有可能?

Thanks谢谢

This might help you get started ...这可能会帮助您开始...

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM