R数据表最后一行索引快捷方式

5
在Matlab中,您可以执行类似以下的操作:
my_matrix[20:end]

如何在my_matrix中获取从第20行到最后一行的数据?在R data.table中是否有类似的快捷方式?例如:

my_matrix[20:end, ]

2
你考虑过使用.N吗? - jazzurro
1
只需要执行 tail(my_matrix, -19)。 - Onyambu
@Onyambu,我认为你可以将其发布为答案。 - Frank
1
谢谢。我想要的只是 my_matrix[20:.N, ] - user3685285
2个回答

2
一个可以使用提取运算符[在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]

……和输出:

> 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
>

根据评论中提到的方法,使用 .Ndata.table 版本如下。

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

...以及输出结果,与另一种方法相匹配:

> 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
> 

请注意,nrow() 方法也适用于数据表格:
aDataTable[(nrow(theData)-4):nrow(theData),1:3]

2

好的,我被建议将此作为答案发布。

tail(my_matrix, -19)

这将为您提供所需的输出。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接