R如果多个参数的函数

时间:2018-01-13 14:44:09

标签: r function if-statement

我这个功能

gillespied4 <- function (N, T = 100, dt = 1, ...) 
{
  tt = 0
  n = T%/%dt
  x = N$M
  S = t(N$Post - N$Pre)
  u = nrow(S)
  v = ncol(S)
  xmat = matrix(ncol = u, nrow = n)
  i = 1
  target = 0
  repeat {
    h = N$h(x, tt, ...)
    h0 = sum(h)
    if (h0 < 1e-10) 
      tt = 1e+99
    else tt = tt + rexp(1, h0)
    while (tt >= target) {
      xmat[i, ] = x
      i = i + 1
      target = target + dt
      if ((i*dt) ==c(seq(0,30000,2000))){
        x[4] = x[4]+(10000/15000)
      }
      if (i > n) 
        return(ts(xmat, start = 0, deltat = dt))
    }
    j = sample(v, 1, prob = h)
    x = x + S[, j]
  }
}

,我遇到了行

的问题
  if ((i*dt) ==c(seq(0,30000,2000))){
    x[4] = x[4]+(10000/15000)
  }

我得到的错误是

In if ((i * dt) == c(seq(0, 30000, 2000))) { ... :
  the condition has length > 1 and only the first element will be used

我知道问题是if函数不适用于多个值。在搜索stackoverflow之后,大多数此类问题的答案建议使用elseif函数或使用|,但我不认为这些适用于此情况。

我想知道是否有办法克服这个问题

0 个答案:

没有答案