【问题标题】:Create a pairwise comparison matrices by a rule in list format通过列表格式的规则创建成对比较矩阵
【发布时间】:2016-12-30 19:41:54
【问题描述】:

我想按规则创建成对比较矩阵,并将结果以列表格式显示。为此,我有:

数据框包含 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

现在,为了创建成对比较矩阵,我的规则是具有最大值的变量减去每个变量的较小数字。但是每个个体(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  

这可能吗?

谢谢

【问题讨论】:

  • 为什么对角线上有 1?它们不应该是零吗?
  • 生成输出的代码在哪里?期望的结果是什么?
  • bouncyball : 我需要在 1 中转换零。
  • Parfait:我的作品是我自己创造的,哈哈

标签: r list matrix


【解决方案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

【讨论】:

  • 谢谢Jean,帮了大忙!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-02-18
  • 2013-11-24
  • 2014-04-22
  • 2012-09-22
  • 2018-08-26
  • 2016-02-18
  • 2019-10-08
相关资源
最近更新 更多