如何子选择索引号 "greater than" R 中某个值的所有行?

How subselect all rows who's index number "greater than" some value in R?

假设我有一个数据框如下:

A<-c(1,2,3,4)
B<-c(5,6,7,8)
C<-c(9,10,11,12)
data<-data.frame(A,B,C)

我知道我可以通过以下方式仅选择第 2 行和第 3 行:

data[2:3,]

我的问题是:如何通过有效地说“索引号 大于 1 的所有行”来实现同样的目的? (即,“数据”的行索引为 1、2 和 3。因此,通过请求行索引“>1”,我应该只获得第 2 行和第 3 行。)

您可以使用 nrow 获取总行数,然后使用大于运算符。

data[1:nrow(data) > 1, ]

此外,例如,如果您需要所有大于 2 的索引:

data[-c(1:2), ]

tidyverse 选项。与使用基本 R 相比,这有点冗长。要保留行索引,您必须将行名称更改为列 filter,然后将具有行名称的列更改回实际行名称。 filter 不保留行名称。

library(tidyverse)

data %>%
  rownames_to_column() %>%
  filter(rowname > 1) %>%
  column_to_rownames()