Wenn Sie eine data.table
zu verwenden passieren (Und warum sollte jemand es nicht verwenden, wenn Sie sowieso einen data.frame verwenden?) - dann können Sie den handlichen Operator .N
(more info) verwenden, der im Wesentlichen die Anzahl der Zeilen in Ihrer Tabelle enthält.
Hier ist ein funktionierendes Beispiel:
# 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)
einfach tauschen, dass 5 für eine 2, um die OP der gewünschte Ausgabe zu erhalten.
Dies ermöglicht natürlich dynamische Verwendung für Tabellen unterschiedlicher Länge, ohne immer die length()
Funktion verwenden zu müssen. Zum Beispiel, wenn Sie wissen, dass Sie die letzten fünf Zeilen einer Tabelle immer nehmen wollen und nehmen Sie die letzte Zeile - immer vier Reihen als Ausgabe - dann können Sie so etwas wie die folgenden tun:
> 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
Oder einfach immer holen Sie sich die letzte Zeile:
cars[.N]
..., die genauso schön und prägnant wie Python entspricht: cars[-1]
)
ich eine ähnliche Frage vor einiger Zeit gefragt: http://stackoverflow.com/questions/ 7500644/elegant-indexieren-up-to-end-of-vector-matrix – TMS