Ich möchte einen Vektor erstellen, in dem jedes Element das i+6th
Element eines anderen Vektors ist.
Zum Beispiel möchte ich in einem Vektor der Länge 120 einen anderen Vektor der Länge 20 erzeugen, in dem jedes Element der Wert i, i+6, i+12, i+18...
des Anfangsvektors ist, dh ich möchte jedes 6. Element des Originals extrahieren.
seq.int
ist in Mikrobenchmarks schneller, aber ich vermute, dass Leistungssteigerungen in einem tatsächlichen Programm durch die Laufzeit anderer Teile in den Schatten gestellt würden.a = 1:120; b = [::6]
. Python kann das erstere nicht, R nicht das letztere.Ein weiterer Trick, um sequentielle Teile zu erhalten (über die bereits erwähnte seq-Lösung hinaus), besteht darin, einen kurzen logischen Vektor zu verwenden und das Vektorrecycling zu verwenden:
quelle
seq
zu können, müssen Sie in der Lage sein,length
den Vektor aufzurufen .letters[letters < 'm'][c(TRUE, FALSE, FALSE)]
Ich denke, Sie fragen zwei Dinge, die nicht unbedingt gleich sind
Sie können dies tun, indem Sie eine Sequenz indizieren:
Eine einfache Möglichkeit, dies zu tun, besteht darin, einen logischen Faktor mit FALSEs zu ergänzen, bis
i+6
:quelle
foo[1:(i+6)!=(i+6)]
dh alle Werte außer dem sechsten ausgegeben.Auswahl jedes n-ten Elements aus einer beliebigen Startposition im Vektor
quelle