Producing numeric sequences in R using standard patterns

r, sequences

Solution

This could be done using the `cumsum` (cumulative sum) function and `rep`:

> 31 + cumsum(rep(c(3, 2, 3), 9))
 [1]  34  36  39  42  44  47  50  52  55  58  60  63  66  68  71  74  76  79  82
[20]  84  87  90  92  95  98 100 103

To make sure sure the sequence stops at the right place:

> (31 + cumsum(rep(c(3, 2, 3), 10)))[1:28]
 [1]  34  36  39  42  44  47  50  52  55  58  60  63  66  68  71  74  76  79  82
[20]  84  87  90  92  95  98 100 103 106

Problem

I am working on a project where I need to enter a number of "T score" tables into R. These are tables used to convert raw test scores into standardized values. They generally follow a specific pattern, but not one that is simple. For instance, one pattern is: ``` 34,36,39,42,44,47,50,52,55,58,60,63,66,68, 71,74,76,79,82,84,87,90,92,95,98,100,103,106 ``` I'd prefer to use a simple function to fill these in, rather than typing them by hand. I know that the seq() function can create a simple seqeuence, like: ``` R> seq(1,10,2) [1] 1 3 5 7 9 ``` Is there any way to create more complex sequences based on specific patterns? For instance, the above data could be done as: ``` c(34,seq(36:106,c(3,3,2)) # The pattern goes 36,39,42,44,47,50,52 (+3,+3,+2) ``` ...however, this results in an error. I thought there would be a function that should do this, but all my Google-fu has just brought me back to the original seq().

Original source