2012-08-14 8 views
6

Estoy buscando la forma más eficiente (es decir, presionar las teclas menores) para indexar el último elemento de una matriz.¿La manera más eficiente de seleccionar el elemento final de una matriz?

Entonces algo así como

a <- c(1,2,3) 
n <- length(a) 
b <- a[n] 

no debe ser utilizado, me gustaría utilizar un único comando.

En el ejemplo anterior que podría utilizar

b <- a[length(a)] 

pero me pregunto si existe algo más corto.

Let Quiero seleccionar una parte de una matriz, como

a <- seq(from = 1, to = 10, by = 1) 
b <- a[3:length(a)] 

¿Hay un camino más corto para hacerlo?

Respuesta

9

Para el primer caso, puede utilizar:

> tail(a, 1) 
[1] 3 

No es que eso realmente califica como más corto.

Para el segundo ejemplo

> tail(a, -2) 
[1] 3 4 5 6 7 8 9 10 

pero en general; no, no hay nada más corto. R no tiene un operador in situ o azúcar sintáctico para el final de un vector o matriz, en el sentido de algo que se evalúa hasta el final de la matriz. Para eso se puede usar length().

6

Uso tail() para conseguir el final de la cola de un objeto:

x <- 1:100 

Por defecto, tail() retornos 6 elementos ...

tail(x) 
[1] 95 96 97 98 99 100 

... pero se puede cambiar eso:

tail(x, 10) 
[1] 91 92 93 94 95 96 97 98 99 100 

Del mismo modo, no es head() para obtener los primeros elementos:

head(x, 7) 
[1] 1 2 3 4 5 6 7 
+1

¿Hay alguna manera de hacer que esto funcione en las columnas? '? tail' dice que agarra filas en el caso 2D. –

Cuestiones relacionadas