Ich frage mich, über die einfache Aufgabe einen Vektors in zwei an einem bestimmten Index Aufspalten:R geteilt numerischen Vektor an Position
splitAt <- function(x, pos){
list(x[1:pos-1], x[pos:length(x)])
}
a <- c(1, 2, 2, 3)
> splitAt(a, 4)
[[1]]
[1] 1 2 2
[[2]]
[1] 3
Meine Frage: Es muss eine bestehende Funktion für das sein, aber ich kann‘ t finden Sie es? Ist vielleicht split
eine Möglichkeit? Meine naive Implementierung funktioniert auch nicht, wenn pos=0
oder pos>length(a)
.
Danke, das funktioniert gut für mich! Ich bin immer noch überrascht, dass es keine 'splitAt'-Funktion in der Basis R ... implementiert – user1981275
Diese Funktion ist sehr langsam mit sehr großen' x', wahrscheinlich aufgrund der 'seq_along (x)', die einen sehr langen Vektor erstellt und dann die% in%, die mit diesem sehr langen Vektor übereinstimmen muss. – Calimo
@Calimo: Nein, wenn du es profilierst, wirst du sehen, dass die meiste Zeit im langsamen Split verbracht wird. Sie können es sicherlich vermeiden, aber Sie werden viel in Bezug auf Lesbarkeit und Code-Kompaktheit verlieren. – flodel