繁体   English   中英

在R中,如何获得加法而不是NA的值

[英]In R, how can I get the value of an addition rather than NA

在下面的示例中,我想要加法的值而不是NA 我怎样才能做到这一点?

set.seed(7354)
a <-  rbinom(1,1,.5)
x <-  ifelse(a==0, rexp(1, 1/50), NA )
y <-  ifelse(a==1, rexp(1, 1/100), NA)
b <- ifelse(a==1, rbinom(1,1,.5), NA)
z1 <- ifelse(b==1, rexp(1, 1/100), NA)
z2 <- ifelse(b==0, rexp(1, 1/190), NA)
s <- (1-a)*x + a *(y + b * z1 + (1-b) * z2)

我想要的输出是s = 968.8501

做这个

s = c( (1-a)*x, a*y, a*b*z1, a*(1-b)*z2 )
s = sum(s, na.rm = T)

这将使您拥有NA,但它们不会影响没有条件的总和。

set.seed(7354)

a <- rbinom(1,1,.5)
x <- (a==0) * rexp(1, 1/50)
y <- (a==1) * rexp(1, 1/100)
b <- (a==1) * rbinom(1,1,.5)
z1 <- (b==1) * rexp(1, 1/100)
z2 <- (b==0) * rexp(1, 1/190)

(1-a)*x + a *(y + b * z1 + (1-b) * z2)
# [1] 968.8501

如果你这样做是为模拟或引导循环的一部分,这将是比一堆快得多 ifelse秒。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM