108*_*089 7 r sequence rstudio
我一直在尝试为以下系列的序列创建一个函数:
1,-2,-3,4,5,6,-7,-8,-9,-10 ........ n(1个正数,2个负数,3个正数,4个负数......然后继续直至n).
创建一个非负序列很容易,但这些负面的术语正在测试我.
如果有人可以帮助我
这是一种方法来做到这一点。
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。
不过,可能还有更好的方法。