在matlab中,您可以执行类似
的操作my_matrix[20:end]
将第20行送到my_matrix
的最后一行。 R data.table
中是否有类似的快捷方式?类似的东西:
my_matrix[20:end, ]
答案 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)
这为您提供所需的输出。