# 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)
3条答案
按热度按时间qltillow1#
负指数表示“跳过”:
跳过vector
mtcars
的前2个索引。如果需要跳过前10个索引,只需使用mtcars[-(1:10)]
。请注意,您提到了“数据集”,但您使用的代码是针对向量的,因此我还回答了
mtcars
是否是向量。如果mtcars
是 Dataframe ,并且您要选择行,则必须使用尾随逗号:inb24sb22#
我更喜欢使用
tail
,其中n
为负值:a8jjtwal3#
如果您碰巧使用了
data.table
(如果您使用的是data.frame,为什么没有人使用它呢?),那么您可以使用方便的.N
运算符(more info),它实际上包含了表中的行数。下面是一个工作示例:
只需将5换为2,即可获得OP所需的输出。
当然,这允许动态使用不同长度的表,而不必总是使用
length()
函数。例如,如果你知道你总是想取一个表的最后5行,并删除最后一行--得到4行作为输出--那么你可以这样做:或者简单地始终获取最后一行:
...它和Python的等价物一样漂亮和简洁:
cars[-1]