Folge alle ganzen Zahlen zwischen zwei Vektoren in R

Ich habe zwei Vektoren:

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

Ich möchte, dass so etwas funktioniert …

Start Ende

Aber natürlich nicht .

Ich möchte eine Liste wie die folgende erstellen:

 [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 

Vorzugsweise in einer vektorisierten Art und Weise. Der Startvektor ist immer größer als der Finish-Vektor für ein entsprechendes Element.

mapply einfach 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 ## 

Sie könnten natürlich auch Vectorize , aber das ist nur ein Wrapper für mapply . Allerdings kann Vectorize nicht mit primitiven functionen verwendet werden, daher müssen Sie seq.default und nicht seq oder seq.int .

Beispiel:

 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 ## 

Stimmen Sie mit @ColonelBeauvel und @nicola überein, obwohl Sie seq anstelle von ‘:’ verwenden könnten

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