ordenar - R: eliminando los últimos elementos de un vector
seq en r (6)
¿Cómo puedo eliminar los últimos 100 elementos de una serie de zoológico?
Sé la notación del nombre [-elemento] pero no puedo hacer que funcione para restar una sección completa
Apuesto que la length<-
es la forma más eficiente de recortar un vector:
> x <- 1:10^5
> length(x)
[1] 100000
> length(x) <- 3
> x
[1] 1 2 3
En realidad, hay una manera mucho más rápida:
y <- x[1:(length(x)-1)]
Muestra del código:
> 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
Otro one-liner en aras de la exhaustividad:
x <- lag(x, 100)[-1:-100]
Solo use los índices numéricos, es decir,
N <- nrow(X)
X <- X[1:(N-100-1),]
donde debe asegurarse de que N
sea más grande, 100, etc.
si eres un trazador de líneas
x = x[1:(length(x) -101)]
Me gusta usar la head
para esto porque es más fácil escribir. Los otros métodos probablemente se ejecuten más rápido ... pero soy flojo y mi computadora no. ;-)
x <- head(x,-100)
> head(1:102,-100)
[1] 1 2