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

时间:2018-01-05 00:12:53

标签: r data.table

在matlab中,您可以执行类似

的操作
my_matrix[20:end]

将第20行送到my_matrix的最后一行。 R data.table中是否有类似的快捷方式?类似的东西:

my_matrix[20:end, ]

2 个答案:

答案 0 :(得分:1)

可以使用提取运算符<svg class="bg container" viewBox="0 0 1024 768" preserveAspectRatio="none" width="100%" height="100%"> <rect class="rect" width="1024" height="768"/> <circle class="cls-2" cx="512" cy="384" r="400"> <defs> <linearGradient id="gradient" y1="384" x2="1024" y2="384" gradientUnits="userSpaceOnUse"> <stop offset="0" stop-color="#f8f7f2"/> <stop offset="1" stop-color="#fcfbf7"/> </linearGradient> <style> .bg.container .rect { fill: url(#gradient); } .bg.container .path { fill: #978a60; opacity: .08; } </style> </defs> </svg> 访问R中矩阵的行和列。此外,[是计算矩阵或数据框中行数的函数。下面是一个创建矩阵并访问最后5行和前3列的示例。我们使用nrow()来确保随机数生成器始终使用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]

OP评论中提到的使用> 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 > 的{​​{1}}版本如下所示。

data.table

...和输出,与其他方法相匹配:

.N

请注意,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
> 

答案 1 :(得分:1)

好。我被建议发布这个作为答案。

tail(my_matrix, -19)

这为您提供所需的输出。