0

階層分析プロセスに精通している人にとっては、これはもう少し直感的に理解できるはずです...

次のコードを使用して data.frame を作成しますcriteria

c <- 5
cri_names <- c("Applicability", "Deployment", "Scalability", "Ease-of-Use", "TCO")
c1 <- data.frame(c = rep(0, c))
criteria <- data.frame(do.call("cbind", rep(c1, c)))
colnames(criteria) <- cri_names
rownames(criteria) <- cri_names

cvs <- data.frame(c1 = c(1, 5, 3, 1, 3),
              c2 = c(1, 1, 1/3, 1/5, 1/5),
              c3 = c(1, 1, 1, 1/3, 3),
              c4 = c(1, 1, 1, 1, 5),
              c5 = c(1, 1, 1, 1, 1))

for(v in c(1:ncol(cvs))) {
  criteria[v, ] <- cvs[, v]
}

print(criteria)

#              Applicability Deployment Scalability Ease-of-Use TCO
#Applicability             1          5   3.0000000   1.0000000 3.0
#Deployment                1          1   0.3333333   0.2000000 0.2
#Scalability               1          1   1.0000000   0.3333333 3.0
#Ease-of-Use               1          1   1.0000000   1.0000000 5.0
#TCO                       1          1   1.0000000   1.0000000 1.0

私が今やりたいことは1、 の左側のすべてをcriteria[x, x]その反対の値の逆数に置き換えることです。例えば:

criteria["Deployment", "Applicability"] <- 1/criteria["Applicability", "Deployment"]

最終結果は次のようになります。

#              Applicability Deployment Scalability Ease-of-Use TCO
#Applicability     1.0000000          5   3.0000000   1.0000000 3.0
#Deployment        0.2000000          1   0.3333333   0.2000000 0.2
#Scalability       0.3333333          3   1.0000000   0.3333333 3.0
#Ease-of-Use       1.0000000          5   3.0000000   1.0000000 5.0
#TCO               0.3333333          5   0.3333333   0.2000000 1.0

ネストされた for ループでこれを達成できると確信していますが、それを完全に理解することはできず、これに取り組む時間がなくなっています。

4

1 に答える 1