Jak mogę usunąć ostatnie 100 elementów z serii Zoo?R: usuwanie ostatnich elementów wektora
wiem nazwę [-elementowe] notacji ale nie mogę go uruchomić odjąć pełnym przekroju
Jak mogę usunąć ostatnie 100 elementów z serii Zoo?R: usuwanie ostatnich elementów wektora
wiem nazwę [-elementowe] notacji ale nie mogę go uruchomić odjąć pełnym przekroju
Wystarczy użyć wskaźników liczbowych, czyli
N <- nrow(X)
X <- X[1:(N-100-1),]
gdzie powinna trzeba zapewnienie N
jest większy 100 itp
jeśli jesteś jeden wykładziny rurowej
x = x[1:(length(x) -101)]
Z twoimi odpowiedziami zbudowałem prawie to, czego potrzebuję coredata (zz2) <- c (rep (0,3), głowa (coredata (zz), - 3)) Teraz po prostu potrzebuję użyć tego wewnątrz seria zoo z kilkoma kolumnami, modyfikująca tylko jedną. – skan
Dla tego lubię używać head
, ponieważ łatwiej jest pisać. Inne metody prawdopodobnie działają szybciej ... ale jestem leniwy, a mój komputer nie. ;-)
x <- head(x,-100)
> head(1:102,-100)
[1] 1 2
Ta odpowiedź powinna zostać przyjęta. Może być używany bez znajomości długości x z góry, co jest korzystne, jeśli próbujesz selektywnie odczytać dane z pliku. Z '? Head':' n: Jeśli jest ujemny, [return] wszystkie oprócz n ostatniej/pierwszej liczby elementów x # – C8H10N4O2
Warto zauważyć, że istnieje również 'tail()', który działa identycznie, ale w odwrotnej kolejności. –
Założę length<-
jest najbardziej skutecznym sposobem przyciąć Vector:
> x <- 1:10^5
> length(x)
[1] 100000
> length(x) <- 3
> x
[1] 1 2 3
Another One-liner dla kompletności wywodu:
x <- lag(x, 100)[-1:-100]
Faktycznie, istnieje o wiele szybciej:
y <- x[1:(length(x)-1)]
Code show:
> microbenchmark(y <- head(x, -1), y <- x[-length(x)],y <- x[1:(length(x)-1)], times=10000)
Unit: microseconds
expr min lq mean median uq max
y <- head(x, -1) 71.399 76.4090 85.97572 78.9230 84.2775 2795.076
y <- x[-length(x)] 53.623 55.5585 65.15008 56.5680 61.1585 2523.141
y <- x[1:(length(x) - 1)] 25.722 28.2925 36.43029 29.1855 30.4010 2410.975
nie działa, jeśli długość 'x' wynosi 1 –
dzięki To, czego naprawdę potrzebuję, jest nieco bardziej skomplikowane. Potrzebuję przenieść serię, usuwając niektóre elementy i dodając inne z drugiej strony , ale kiedy robię c (rep (0,10), x [1: (długość (x) -11)]) to nie jest zoo jeszcze. Pozdrawiam: – skan
@skan: Co powiesz o zaakceptowaniu odpowiedzi, aby oznaczyć pytanie jako rozwiązane? – MERose