我有一个公式,说:
v12=-(ln(v6)*v6+ln(v7)*v7+ln(v8)*v8+ln(v9)*v9).
我在计算中的一个或两个变量中有0个数字。由于ln(0)
未定义,因此未执行计算。有没有办法忽略计算中包含0的任何变量并在没有它的情况下继续?我尝试使用na,但它失败了。
答案 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!