如何在R中编写条件语句

时间:2019-07-08 01:51:59

标签: r

我正在尝试编写一个函数

在此函数中称为函数smart.pois xlamba的Poisson pmf函数我想检查x的以下条件 1.如果x为负,则返回缺失值(NA.)。 2.如果x为非整数,则截断x然后继续。 3.如果x对于阶乘函数太大,则返回可能的最小数值。

我编写了此函数,但无法正确编写条件。

smart.pois <- function(x, lambda){
y<- round((exp(-lambda))* (1/factorial(x))*exp(x*log (lambda)),3)
return (y)
}
if (x == "Negative")
return (NA)

if (x =){
return 
} 

预先感谢

1 个答案:

答案 0 :(得分:0)

在函数中进行计算,然后使测试独立。我将首先测试条件并更新x,然后进行如下计算:

smart.pois <- function(x, lambda, xmax=Inf) {
  x <- pmin(x, xmax) #3. If x is too large - you have to define what is too large
  x <- trunc(x)      #2. If x is non-integer
  idx <- x < 0       #1. If x is negative
  x[idx] <- 0   #Overwrite negative x to avoid warnings
  ifelse(idx, NA, round((exp(-lambda))* (1/factorial(x))*exp(x*log (lambda)),3))
}

smart.pois(c(-1, 1, 1.2, 1.9, 999), 1, 100)
#NA 0.368 0.368 0.368 0.000