在R中创建具有正数和负数的序列

108*_*089 7 r sequence rstudio

我一直在尝试为以下系列的序列创建一个函数:

1,-2,-3,4,5,6,-7,-8,-9,-10 ........ n(1个正数,2个负数,3个正数,4个负数......然后继续直至n).

创建一个非负序列很容易,但这些负面的术语正在测试我.

如果有人可以帮助我

Wil*_*son 4

这是一种方法来做到这一点。

myfun <- function(n) {
  myvec <- integer(n)
  for (i in seq_len(n)) {
    curtri <- ceiling(sqrt(i*2 + 0.25) - 0.5)
    myvec[i] <- i * (-1)^(curtri + 1)
  }
  return(myvec)
}

myfun(10)
 [1]   1  -2  -3   4   5   6  -7  -8  -9 -10
Run Code Online (Sandbox Code Playgroud)

它利用了这样一个事实:您可以找到您所在的三角形数字sqrt(i*2 + 0.25) - 0.5。通过将偶数应用于非三角数,我们可以确定下一个三角数的索引,并将其用作 的指数-1

不过,可能还有更好的方法。