Sequenciar todos os inteiros entre dois vetores em R

Eu tenho dois vetores:

Start = c(1,10,20) Finish = c(9,19,30) 

Eu gostaria que algo assim funcionasse …

Início: terminar

Mas é claro que isso não acontece .

Eu gostaria de produzir uma lista como a seguinte:

 [1] 1,2,3,4,5,6,7,8,9 [2] 10 11 12 13 14 15 16 17 18 19 [3] 20 21 22 23 24 25 26 27 28 29 30 

De preferência de alguma forma vetorizada. O vetor Start será sempre maior que o vetor Finish para um elemento correspondente.

Apenas use mapply :

 Start = c(1,10,20) Finish = c(9,19,30) mapply(":", Start, Finish) ## [[1]] ## [1] 1 2 3 4 5 6 7 8 9 ## ## [[2]] ## [1] 10 11 12 13 14 15 16 17 18 19 ## ## [[3]] ## [1] 20 21 22 23 24 25 26 27 28 29 30 ## 

Você poderia, é claro, também usar Vectorize , mas isso é apenas um invólucro para mapply . No entanto, Vectorize não pode ser usado com funções primitivas, então você terá que especificar seq.default ao invés de seq ou seq.int .

Exemplo:

 Vectorize(seq.default)(Start, Finish) ## [[1]] ## [1] 1 2 3 4 5 6 7 8 9 ## ## [[2]] ## [1] 10 11 12 13 14 15 16 17 18 19 ## ## [[3]] ## [1] 20 21 22 23 24 25 26 27 28 29 30 ## 

Concordar com @ColonelBeauvel e @nicola, embora você possa usar seq em vez de ‘:’,

 Start = c(1,10,20) Finish = c(9,19,30) Map(seq, Start, Finish)