Chciałbym stworzyć wektor, w którym każdy element jest i+6th
elementem innego wektora.
Na przykład w wektorze o długości 120 chcę utworzyć inny wektor o długości 20, w którym każdy element jest wartością i, i+6, i+12, i+18...
wektora początkowego, czyli chcę wyodrębnić co szósty element oryginału.
seq.int
jest szybszy w mikroznakach, ale podejrzewam, że jakikolwiek wzrost wydajności w rzeczywistym programie byłby przyćmiony przez czas działania innych części.a = 1:120; b = [::6]
. Python nie może zrobić tego pierwszego, R nie może zrobić tego drugiego.Inną sztuczką do uzyskania kolejnych elementów (poza wspomnianym już rozwiązaniem sekwencyjnym) jest użycie krótkiego wektora logicznego i wykorzystanie recyklingu wektorów:
źródło
seq
musisz mieć możliwość wywołanialength
wektora.letters[letters < 'm'][c(TRUE, FALSE, FALSE)]
Myślę, że pytasz o dwie rzeczy, które niekoniecznie są takie same
Możesz to zrobić, indeksując sekwencję:
Łatwym sposobem na to jest uzupełnienie czynnika logicznego wartościami FAŁSZ, aż
i+6
:źródło
foo[1:(i+6)!=(i+6)]
tj. Wyprowadzam wszystkie wartości z wyjątkiem szóstej.Aby zaznaczyć każdy n-ty element z dowolnej pozycji początkowej w wektorze
źródło