Zastanawiam o prostym zadaniem dzielenie wektora na dwie części w określonym indeksie:R podzielić wektor numerycznej w pozycji
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
Moje pytanie: Tam musi być jakaś istniejąca funkcja dla tego, ale mogę” t go znaleźć? Czy możliwe jest, że split
? Moja naiwna implementacja również nie działa, jeśli pos=0
lub pos>length(a)
.
Dzięki, to działa dobrze dla mnie! Nadal jestem zaskoczony, że nie ma funkcji "splitAt" zaimplementowanej w base R ... – user1981275
Ta funkcja jest bardzo powolna z bardzo dużym 'x', prawdopodobnie ze względu na' seq_along (x) ', który tworzy bardzo długi wektor, a następnie "% w%", który musi pasować do tego bardzo długiego wektora. – Calimo
@ Calimo: nie, jeśli to zrobisz, zobaczysz, że większość czasu spędza się wewnątrz powolnego "podziału". Z pewnością można tego uniknąć, ale stracisz dużo pod względem czytelności i zwartości kodu. – flodel