【发布时间】:2020-09-14 22:51:22
【问题描述】:
这段代码对我来说似乎是多余的,但我不确定如何使它更简洁?我听说我可以使用将分配 SpecificLikelihoodFactorXXXX 对象的可能性计算器类,但我不知道该怎么做。
likelihood <- (density*count)/100000000
if (factorA=="Yes") {
likelihood<- likelihood*.35
}
if (factorB<30){
likelihood <- likelihood*1.31
}
if (factorC>50){
likelihood <- likelihood*1.9
} else if (factorC>25){
likelihood <- likelihood*1.6
} else if (factorC>10){
likelihood <- likelihood*1.3
} else if (factorC==0){
likelihood<- likelihood
}
if (factorD=="Yes"){
likelihood <- likelihood*1.66
}
【问题讨论】:
-
您不需要 S4。只需摆脱 else 语句,因为它们都没有做任何事情。他们中的许多人只是为自己分配一个变量,并且永远无法达到 factorC > 25 和 factorC > 50 的语句,因为将首先采用 factorC > 10。
-
这里使用S4是“我是锤子,一切都是钉子”的心态。当然,您可以在此处简化一些代码,但是在此示例代码中,面向对象范式不会启用或简化任何内容。恰恰相反,学习和调试 S4 只是为了改进这段代码需要更长的时间。