Как я могу извлечь часть вектора в другой вектор (включая позиции) - PullRequest
1 голос
/ 20 января 2020

У меня есть вектор с разными значениями (положительными и отрицательными), поэтому я хочу выбрать только 10 самых младших нечетных чисел и 10 самых низких парных значений. Помогите мне, пожалуйста!

Ответы [ 2 ]

1 голос
/ 20 января 2020

Учитывая вектор v в качестве входного вектора, вы можете получить желаемый результат (включая позиции) с помощью следующего кода

names(v) <- seq_along(v)
# lowest 10 odd numbers
low_odd <- sort(v[v%%2==1])[1:10]
# positions of those odd numbers in v
low_odd_pos <- as.numeric(names(low_odd))

# lowest 10 even numbers
low_even <- sort(v[v%%2==0])[1:10]
# positions of those even numbers in v
low_even_pos <- as.numeric(names(low_even))

Пример

set.seed(1)
v <- sample(-50:50)

тогда

> low_odd
 43 101  39  95  85  72   7  73  45  29 
-49 -47 -45 -43 -41 -39 -37 -35 -33 -31 

> low_odd_pos
 [1]  43 101  39  95  85  72   7  73  45  29
1 голос
/ 20 января 2020

Это способ сделать это, используя базовый вектор R.

с нечетными и четными числами

x <- sample(-100:100, 30)

Оператор модуля в R помогает получить Работа выполнена. Вы можете использовать его таким образом

c(
# Extract the lowest even numbers
  head(sort(x[x %% 2 == 0]), 5),
# Extract the lowest odds numbers
  head(sort(x[x %% 2 == 1]), 5)
  )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...