R中数据帧子集的提取

R中数据帧子集的提取,r,R,假设我将一个csv文件读入一个名为“d”的数据帧中。我希望打印此数据帧的最后两行。我尝试了下面的方法,但它正在从n-1开始打印所有内容。有人能帮我理解这种行为吗 > n<-nrow(d) > n [1] 153 > subset(d[n:n-1,]) >n [1] 153 >子集(d[n:n-1,]) 这对我有用 d <- matrix(1:10,nrow=5) d [,1] [,2] [1,] 1 6 [2,] 2 7 [3,]

假设我将一个csv文件读入一个名为“d”的数据帧中。我希望打印此数据帧的最后两行。我尝试了下面的方法,但它正在从n-1开始打印所有内容。有人能帮我理解这种行为吗

> n<-nrow(d)
> n
[1] 153
> subset(d[n:n-1,])
>n
[1] 153
>子集(d[n:n-1,])

这对我有用

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
d你可以用tail

  tail(d, 2)

将给出最后两行

@mnel认为使用tail()可能是最简单的,这是正确的,但是我认为您的困惑与subset()和索引通常是如何工作的有关。在您的示例中,请注意如何索引矩阵和data.frames

d[(n:n - 1), ]
不一样

d[n:(n-1), ]
因此,仔细检查差异,因为理解操作顺序很重要。 subset()函数还基于逻辑指示符进行索引,其形式为

 subset(object, subset = logicalvector)
其中逻辑向量给出了要提取的行。有关详细信息,请参见?子集

我会使用:
tail(d,2)
d[(n-1):n,]

希望它有帮助

这里不需要子集。你正在使用[。