Предположим, у меня есть следующий вектор:Нахождение нескольких элементов в векторе
> x <- sample(1:10,20,replace=TRUE)
> x
[1] 8 6 9 9 7 3 2 5 5 1 6 8 5 2 9 3 5 10 8 2
Как я могу найти, какие элементы являются либо 8 или 9?
Предположим, у меня есть следующий вектор:Нахождение нескольких элементов в векторе
> x <- sample(1:10,20,replace=TRUE)
> x
[1] 8 6 9 9 7 3 2 5 5 1 6 8 5 2 9 3 5 10 8 2
Как я могу найти, какие элементы являются либо 8 или 9?
Это один из способов сделать это. Во-первых я получаю индексы, при которых х является либо 8 или 9. Тогда можно проверить, что в этих индексов х действительно 8 и 9.
> inds <- which(x %in% c(8,9))
> inds
[1] 1 3 4 12 15 19
> x[inds]
[1] 8 9 9 8 9 8
В качестве альтернативы, если вам не нужно использовать индексы, но только элементы вы можете сделать
> x <- sample(1:10,20,replace=TRUE)
> x
[1] 6 4 7 2 9 3 3 5 4 7 2 1 4 9 1 6 10 4 3 10
> x[8<=x & x<=9]
[1] 9 9
вы можете попробовать оператор |
для коротких условий
which(x == 8 | x == 9)
grepl
может быть полезной функцией. Обратите внимание, что grepl
появляется в версиях R 2.9.0 и выше. Что удобно для grepl
, так это то, что он возвращает логический вектор той же длины, что и x
.
grepl(8, x)
[1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[13] FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE
grepl(9, x)
[1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE
[13] FALSE FALSE FALSE FALSE TRUE FALSE FALSE TRUE
Чтобы получить ваш ответ, вы можете сделать следующее
grepl(8,x) | grepl(9,x)
Мне нравится grepl, отлично подходит для фильтрации данных в текстовых строках и т. Д. Спасибо за пример OR - я думал, что это будет так просто , но я продолжал пробовать '||', что является неправильным синтаксисом. – atomicules
Это очень опасное решение. 'grepl (9, c (9, 99, 654649))' вернет 'TRUE' для всех этих. Нужно быть очень осторожным с точными совпадениями и регулярным выражением. –
Но предположит, что я ищу конкретные показатели двух значений без их заказов, отсортированных. Как получить результат «26, 1» вместо «1, 26», если я ищу индексы Z и A в алфавите? _which (буквы% in% c ('z', 'a')) _ – dasf