Comment puis-je supprimer les 100 derniers éléments d'une série de zoo?R: supprimer les derniers éléments d'un vecteur
Je connais le nom [-Element] notation mais je ne peux pas le faire fonctionner à une section complète soustrayez
Comment puis-je supprimer les 100 derniers éléments d'une série de zoo?R: supprimer les derniers éléments d'un vecteur
Je connais le nom [-Element] notation mais je ne peux pas le faire fonctionner à une section complète soustrayez
Il suffit d'utiliser les indices numériques, soit
N <- nrow(X)
X <- X[1:(N-100-1),]
où vous avez besoin de assurer N
est plus 100 etc
si vous êtes une doublure
x = x[1:(length(x) -101)]
Avec toutes vos réponses j'ai construit presque ce dont j'ai besoin coredata (zz2) <- c (rep (0,3), tête (coredata (zz), - 3)) Maintenant, je dois juste l'utiliser à l'intérieur une série de zoo avec plusieurs colonnes, en en modifiant une seule. – skan
J'aime utiliser head
pour cela, car il est plus facile de taper. Les autres méthodes s'exécutent probablement plus vite cependant ... mais je suis paresseux et mon ordinateur ne l'est pas. ;-)
x <- head(x,-100)
> head(1:102,-100)
[1] 1 2
Cette réponse devrait être acceptée. Il peut être utilisé sans connaître la longueur de x à l'avance, ce qui est avantageux si vous essayez de lire de manière sélective les données d'un fichier. De '? Head':' n: Si négatif, [return] tout sauf le n dernier/premier nombre d'éléments de x. ' – C8H10N4O2
À noter qu'il y a aussi 'tail()' qui fonctionne de manière identique mais inversée. –
Je parie que length<-
est le moyen le plus efficace pour couper un vecteur:
> x <- 1:10^5
> length(x)
[1] 100000
> length(x) <- 3
> x
[1] 1 2 3
Un autre one-liner pour être complet:
x <- lag(x, 100)[-1:-100]
En fait, il y a un moyen beaucoup plus rapide:
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
ne fonctionne pas si la longueur de 'x' est de 1 –
merci Ce dont j'ai vraiment besoin est un peu plus compliqué. Je dois décaler la série, enlever quelques éléments et en ajouter d'autres de l'autre côté mais quand je fais c (rep (0,10), x [1: (longueur (x) -11)]) ce n'est pas zoo plus. Bravo – skan
@skan: Qu'en est-il d'accepter une réponse pour marquer la question comme résolue? – MERose