Считать, если конкретный элемент находится в заданном диапазоне? - PullRequest
0 голосов
/ 20 марта 2019

У меня есть вектор, составленный из списков длины 10. У меня есть два других вектора, хранящих их нижний и верхний квантили.Есть ли способ извлечь данные из квантиля для каждого списка из 10?

В основном я смотрю, чтобы увидеть, сколько из них имеют конкретное число.

sims - это вектор с данными

До сих пор я пытался использовать% в% (примечание - это вектор со списками))

 for (i in 1:100){
  a <- 80.0  %in% sims[[i]]
 }

Я собирался подсчитать, сколько из них истинно, а затем подсчитать их, однако, это только возвращает ложь и также не гарантирует, находится ли оно в диапазоне.

Есть ли более простой способ, чем сортировка каждого списка путем извлечения соответствующих данных с последующей проверкой, имеет ли оно значение?

1 Ответ

0 голосов
/ 20 марта 2019

Поскольку вы не предоставили примерный набор данных, вот воспроизводимый пример, основанный на некоторых примерных данных, которые я генерирую

set.seed(2018)
lst <- replicate(4, sample(10), simplify = FALSE)
qrt <- lapply(lst, quantile, probs = c(0.25, 0.75))

Здесь я сгенерировал квантили 25% и 75% для каждого vectorв list;В результате получается list с таким количеством элементов, как list.

. Теперь мы можем использовать Map для выбора только тех элементов из list, которые попадают в диапазон квантилей

Map(function(x, y) x[x >= y[1] & x <= y[2]], lst, qrt)
#[[1]]
#[1] 4 5 7 6
#
#[[2]]
#[1] 4 6 5 7
#
#[[3]]
#[1] 6 5 4 7
#
#[[4]]
#[1] 4 7 6 5

Для подсчета количества элементов в квантильном диапазоне

Map(function(x, y) sum(x >= y[1] & x <= y[2]), lst, qrt)
#[[1]]
#[1] 4
#
#[[2]]
#[1] 4
#
#[[3]]
#[1] 4
#
#[[4]]
#[1] 4
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...