Как отсортировать вектор и вывести значение Top X, если оно плоское? - PullRequest
0 голосов
/ 30 ноября 2018

R язык: Как отсортировать вектор и напечатать значение Top X, если значение плоское?

Если у меня есть такой вектор, как

v <- c(1,2,3,3,4,5)

, я хочу напечатать TOP1 ~TOP3 значения.

Поэтому я использую:

sort(v)[1:3]
[1] 1 2 3

В этом случае TOP3 имеет 2 значения

, которые я хочу напечатать:

[1] 1 2 3 3

и их индекс

Ответы [ 2 ]

0 голосов
/ 30 ноября 2018

Мы можем использовать top_n из dplyr

library(dplyr)
data.frame(v) %>% top_n(-3)

#  v
#1 1
#2 2
#3 3
#4 3

, это возвращает фрейм данных, если вам нужен вектор pull это

data.frame(v) %>% top_n(-3) %>% pull(v)
#[1] 1 2 3 3
0 голосов
/ 30 ноября 2018

Один из способов сделать это:

v[v %in% sort(v)[1:3]]
# [1] 1 2 3 3

# following up OP's comment, if you want ordered outcomes:
# sort(v[v %in% sort(v)[1:3]])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...