Wie kann ich die letzten 100 Elemente einer Zoo-Serie entfernen?R: Entfernen der letzten Elemente eines Vektors
Ich kenne den Namen [-elementigen] Notation aber ich kann es keine vollständigen Abschnitt subtrahieren erhalten arbeiten
Wie kann ich die letzten 100 Elemente einer Zoo-Serie entfernen?R: Entfernen der letzten Elemente eines Vektors
Ich kenne den Namen [-elementigen] Notation aber ich kann es keine vollständigen Abschnitt subtrahieren erhalten arbeiten
einfach die numerische Indizes verwenden, dh
N <- nrow(X)
X <- X[1:(N-100-1),]
, wo Sie benötigen sollen gewährleisten N
etc größer 100
ist, wenn Sie ein Motto
x = x[1:(length(x) -101)]
sind
Mit all Ihren Antworten habe ich fast das gebaut, was ich brauche coredata (zz2) <- c (rep (0,3), Kopf (coredata (zz), - 3)) Jetzt muss ich es nur noch verwenden eine Zoo-Serie mit mehreren Spalten, die nur eine ändert. – skan
Ich mag head
dafür verwenden, weil es einfacher zu tippen ist. Die anderen Methoden laufen wahrscheinlich schneller, aber ich bin faul und mein Computer nicht. ;-)
x <- head(x,-100)
> head(1:102,-100)
[1] 1 2
Diese Antwort sollte akzeptiert werden. Es kann verwendet werden, ohne die Länge von x im Voraus zu kennen, was vorteilhaft ist, wenn Sie versuchen, Daten selektiv aus einer Datei zu lesen. Von '? Head':' n: Wenn negativ, [return] alle außer der n letzten/ersten Anzahl von Elementen von x.' – C8H10N4O2
Bemerkenswert ist auch 'tail()', das identisch funktioniert, aber umgekehrt. –
ich length<-
wette der effizienteste Weg ist, einen Vektor zu trimmen:
> x <- 1:10^5
> length(x)
[1] 100000
> length(x) <- 3
> x
[1] 1 2 3
Ein weiterer Einzeiler aus Gründen der Vollständigkeit halber:
x <- lag(x, 100)[-1:-100]
Eigentlich gibt es ein viel schneller Weg:
y <- x[1:(length(x)-1)]
Code zeigen:
> 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
funktioniert nicht, wenn die Länge von 'x' 1 ist –
danke Was ich wirklich brauche, ist ein bisschen komplizierter. Ich muss die Reihe verschieben, einige Elemente entfernen und andere von der anderen Seite hinzufügen, aber wenn ich c (rep (0,10), x [1: (Länge (x) -11)]) es ist kein Zoo irgendwelcher Mehr. Prost – skan
@skan: Was ist mit einer Antwort zu akzeptieren, um die Frage als gelöst zu markieren? – MERose