Мы можем использовать slice
после arrange
ing через 'n'. Здесь мы вызываем arrange
только один раз
library(dplyr)
top_n_rows <- 2
df %>%
arrange(n) %>%
slice(sort(c(seq_len(top_n_rows), n() - seq_len(top_n_rows) + 1)))
# A tibble: 4 x 2
# x n
# <int> <int>
#1 1 1
#2 2 2
#3 9 9
#4 10 10
. Или другой вариант: row_number()
df %>%
arrange(n) %>%
slice(c(head(row_number(), top_n_rows), tail(row_number(), top_n_rows)))
Если мы просто поднаборим первые n и последние n строк без учета каких-либо столбцов в порядке
rbind(head(df, top_n_rows), tail(df, top_n_rows))
или с row.names
df[c(head(row.names(df), top_n_rows), tail(row.names(df), top_n_rows)),]