如何创建一个增加其R步骤的序列

时间:2017-12-07 17:10:54

标签: r sequence

我试图创建一个在每个时间间隔逐步增加一个序列的序列,但是无法设法做到这一点。

我希望我的结果看起来像这样:

vec <- c(1,3,6,10,15,21,28,36,45,55)

所以基本上,从1开始,每个索引都等于先例加上一步一步增加1的数字,如

[i]=[i-1]+seq(from=i, to=10, by=1)

但当然这不是正确的表示法。

你如何设置它以获得vec中显示的内容?我想有一些循环是必要的,以使向量中的索引呈指数增长。

1 个答案:

答案 0 :(得分:0)

这称为Triangular Number Sequence,格式为:

Tn = 1 + 2 + 3 + 4 + 5 + ... + n

可以使用R:

中的cumsum函数创建
cumsum(1:10)
# [1]  1  3  6 10 15 21 28 36 45 55

或类似的东西,如果您更喜欢递归:

tri_num = function(n){
  if(n <= 1){
    return(1)
  }else{
    return(n+tri_num(n-1))
  }
}

sapply(1:10, tri_num)