用R中的模式构造序列

时间:2015-01-27 20:21:27

标签: r

我想构建一个长度为5000的以下类型的序列:x<-c(1:i,(2*i):(i+1),(2*i+1):(3*i),(4*i):(3*i+1),...)i=2,3,4....,2500。 我正在考虑将这个序列构建为两个序列的总和:第一个是a=1:5000,而第二个序列是包含模式的序列。例如,当i = 2时,我有以下内容:c(0, 0, 1, -1),而对于i = 4,我有c(0, 0, 0, 0, 3, 1, -1, -3)。当i = 2时,我可以构建一个类似b=c(rep(0,i),i-1,i-3)的向量,然后将ab相加以获得我想要的结果(感谢回收规则)。

我正试图找到一种方法来“概括”向量的第二部分(即没有rep()的部分),可能会减去i从1到5000向上移动的序列然而,我应该在我想要重复多次的模式之后停止向量(例如,在i = 2的情况下,在4个分量之后)。有没有更好的方法呢?

1 个答案:

答案 0 :(得分:1)

我发现这个问题非常不清楚。如果请求是针对一系列长度增加的向量,其中前n个值为零,并且接下来的n个值为n-1到 - (n-1),那么这是一种可能性:

 lapply(1:10 ,   #obviously this is a toy demonstration
        function(n)  c(rep(0,n), seq(n-1, 1-n, length=n) ) )
 #-----------
     [[1]]
[1] 0 0

[[2]]
[1]  0  0  1 -1

[[3]]
[1]  0  0  0  2  0 -2

[[4]]
[1]  0  0  0  0  3  1 -1 -3

[[5]]
 [1]  0  0  0  0  0  4  2  0 -2 -4
Snipped remaining output.