¿Cómo puedo eliminar los últimos 100 elementos de una serie de zoológico?R: eliminación de los últimos elementos de un vector
sé el nombre [-elemento] notación pero no lo puede operar a restar una sección completa
¿Cómo puedo eliminar los últimos 100 elementos de una serie de zoológico?R: eliminación de los últimos elementos de un vector
sé el nombre [-elemento] notación pero no lo puede operar a restar una sección completa
Sólo tiene que utilizar los índices numéricos, es decir
N <- nrow(X)
X <- X[1:(N-100-1),]
donde debe necesitar asegurar N
es mayor de 100, etc
si usted es un chiste
x = x[1:(length(x) -101)]
Con todas sus respuestas he construido casi lo que necesito coredata (zz2) <- c (rep (0,3), head (coredata (zz), - 3)) Ahora solo necesito usarlo dentro una serie de zoológico con varias columnas, modificando solo una. – skan
Me gusta usar 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
Esta respuesta debe ser aceptada. Puede usarse sin conocer la longitud de x por adelantado, lo cual es una ventaja si está intentando leer datos de un archivo de manera selectiva. De '? Head':' n: Si es negativo, [devolver] todos menos el núltimo/primer número de elementos de x. – C8H10N4O2
. Vale la pena señalar que también hay 'tail()' que funciona de forma idéntica pero a la inversa. –
apuesto length<-
es la forma más eficiente para recortar un vector:
> x <- 1:10^5
> length(x)
[1] 100000
> length(x) <- 3
> x
[1] 1 2 3
Otro de una sola línea en aras de la exhaustividad:
x <- lag(x, 100)[-1:-100]
En realidad, hay una forma mucho más rápida:
y <- x[1:(length(x)-1)]
Código 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
no funciona si la longitud de 'x' es 1 –
gracias Lo que realmente necesito es un poco más complicado. Necesito cambiar la serie, eliminar algunos elementos y agregar otra desde el otro lado pero cuando lo hago c (rep (0,10), x [1: (longitud (x) -11)]) no es zoológico Más. ovaciones – skan
@skan: ¿Qué hay de aceptar una respuesta para marcar la pregunta como resuelta? – MERose