使用嵌套if else语句排除计算中的某些条件变量

时间:2014-05-24 00:32:07

标签: c formula

我有一个公式,说:

v12=-(ln(v6)*v6+ln(v7)*v7+ln(v8)*v8+ln(v9)*v9). 

我在计算中的一个或两个变量中有0个数字。由于ln(0)未定义,因此未执行计算。有没有办法忽略计算中包含0的任何变量并在没有它的情况下继续?我尝试使用na,但它失败了。

1 个答案:

答案 0 :(得分:0)

有两个选择(一个是R语言 ,这是你最初要求的:S):

1)你真正要求的是,在R 中,使用矢量化:

vec = c(v6,v7,v8,v9)
result = -sum(ifelse(vec!=0, vec*log(vec), 0))

2)对于小数字,log1p()是更安全,数值更好的替代方案:

v12 = -sum(lapply(c(v6,v7,v8,v9), function(x) { x*log1p(x) } ))

您也可以在C中使用log1p

相关问题