Si sucede utilizar un data.table
(y ¿por qué alguien no lo usaría, si está utilizando un data.frame de todos modos?) - entonces puede usar el práctico operador .N
(more info), que en esencia contiene el número de filas en su tabla.
Aquí está un ejemplo de trabajo:
# make sure you have data.table
install.packages("data.table")
library(data.table)
# load the mtcars data
data(mtcars)
# Make a data table out of the mtcars dataset
cars <- as.data.table(mtcars, keep.rownames = TRUE)
# Take all the rows from a given index (e.g. 5) to the end
> cars[5:.N]
rn mpg cyl disp hp drat wt qsec vs am gear carb
1: Hornet Sportabout 18.7 8 360.0 175 3.15 3.440 17.02 0 0 3 2
2: Valiant 18.1 6 225.0 105 2.76 3.460 20.22 1 0 3 1
3: Duster 360 14.3 8 360.0 245 3.21 3.570 15.84 0 0 3 4
4: Merc 240D 24.4 4 146.7 62 3.69 3.190 20.00 1 0 4 2
... (truncated)
sólo cambio que 5 para un 2 con el fin de obtener una salida deseada de la OP.
Esto, por supuesto, permite el uso dinámico para tablas de diferentes longitudes, sin tener que utilizar siempre la función length()
. Por ejemplo, si se sabe que uno siempre quiere tener los últimos 5 filas de una tabla y quitar la última fila - conseguir 4 filas como salida - entonces usted puede hacer algo como lo siguiente:
> cars[(.N-4):(.N-1)] # note the expressions for slicing must be in parentheses
rn mpg cyl disp hp drat wt qsec vs am gear carb
1: Lotus Europa 30.4 4 95.1 113 3.77 1.513 16.9 1 1 5 2
2: Ford Pantera L 15.8 8 351.0 264 4.22 3.170 14.5 0 1 5 4
3: Ferrari Dino 19.7 6 145.0 175 3.62 2.770 15.5 0 1 5 6
4: Maserati Bora 15.0 8 301.0 335 3.54 3.570 14.6 0 1 5 8
O, simplemente, siempre obtener la última fila:
cars[.N]
... que es tan agradable y concisa como equivalente de Python: cars[-1]
)
hice una pregunta similar hace algún tiempo: http://stackoverflow.com/questions/ 7500644/elegant-indexing-to-end-of-vector-matrix – TMS