假设我将csv文件读入名为“d”的数据框中。我希望打印此数据框的最后两行。我尝试了下面但它打印的所有内容都是从n-1开始的。有人可以帮我理解这种行为吗?
> n<-nrow(d)
> n
[1] 153
> subset(d[n:n-1,])
答案 0 :(得分:6)
你可以使用tail
tail(d, 2)
将给出最后两行。
答案 1 :(得分:6)
@mnel是正确的,使用tail()可能是最简单的,但我认为你的混淆与子集()和索引的工作方式有关。在您的示例中,请注意自
以来如何索引矩阵和data.framesd[(n:n - 1), ]
与
不同d[n:(n-1), ]
因此,请仔细检查差异,因为操作顺序非常重要。 subset()函数也基于逻辑指示符进行索引,格式为
subset(object, subset = logicalvector)
其中逻辑向量给出了要提取的行。有关详细信息,请参阅?subset。
答案 2 :(得分:2)
这对我有用......
d <- matrix(1:10,nrow=5)
d
[,1] [,2]
[1,] 1 6
[2,] 2 7
[3,] 3 8
[4,] 4 9
[5,] 5 10
d <- as.data.frame(d)
d
V1 V2
1 1 6
2 2 7
3 3 8
4 4 9
5 5 10
n <- nrow(d)
> n
[1] 5
d[n:(n-1),] ## Specifying the number of the row inside the brackets.
V1 V2
5 5 10
4 4 9
d[n:n-1,] ## without brackets it will do 5:5 -1 = 4, so printing only the fourth row
V1 V2
4 4 9
答案 3 :(得分:1)
我会用:
tail(d, 2)
要么
d[(n-1):n, ]
希望它有所帮助