R data.table 最后一行索引快捷方式

use*_*285 5 r data.table

在matlab中,你可以做类似的事情

my_matrix[20:end]
Run Code Online (Sandbox Code Playgroud)

这将获取 中的第 20 行到最后一行my_matrix。中是否有类似的快捷方式R data.table?就像是:

my_matrix[20:end, ]
Run Code Online (Sandbox Code Playgroud)

Len*_*ski 2

可以使用 extract 运算符访问 R 中矩阵的行和列[。另外,nrow()是计算矩阵或数据框中的行数的函数。下面是一个创建矩阵并访问最后 5 行和前 3 列的示例。我们使用set.seed()来确保随机数生成器始终生成与 相同的结果runif()

set.seed(95014123)
theData <- matrix(runif(2000),nrow=200,ncol=10)
# print last 5 rows, first 3 columns
theData[(nrow(theData)-4):nrow(theData),1:3]
Run Code Online (Sandbox Code Playgroud)

...以及输出:

> theData[(nrow(theData)-4):nrow(theData),1:3]
           [,1]      [,2]      [,3]
[1,] 0.2028385 0.8105820 0.0171761
[2,] 0.4002767 0.9859544 0.7952463
[3,] 0.6723984 0.2401554 0.9591462
[4,] 0.3931757 0.4883088 0.2563899
[5,] 0.5325255 0.1430370 0.7674389
>
Run Code Online (Sandbox Code Playgroud)

data.tableOP 评论中提到的使用版本如下.N所示。

library(data.table)
aDataTable <- as.data.table(theData)
# print last 5 rows, first 3 columns
aDataTable[((.N)-4):.N,1:3]
Run Code Online (Sandbox Code Playgroud)

...以及与其他方法匹配的输出:

> aDataTable[((.N)-4):.N,1:3]
          V1        V2        V3
1: 0.2028385 0.8105820 0.0171761
2: 0.4002767 0.9859544 0.7952463
3: 0.6723984 0.2401554 0.9591462
4: 0.3931757 0.4883088 0.2563899
5: 0.5325255 0.1430370 0.7674389
> 
Run Code Online (Sandbox Code Playgroud)

请注意,该nrow()方法也适用于数据表:

aDataTable[(nrow(theData)-4):nrow(theData),1:3]
Run Code Online (Sandbox Code Playgroud)