Załóżmy, że mam następujący wektor:Znalezienie wielu elementów w wektorze
> 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
Jak mogę dowiedzieć się, jakie elementy są albo 8 lub 9?
Załóżmy, że mam następujący wektor:Znalezienie wielu elementów w wektorze
> 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
Jak mogę dowiedzieć się, jakie elementy są albo 8 lub 9?
Jest to jeden sposób na zrobienie tego. Po pierwsze mam indeksów, w którym x oznacza albo 8 lub 9. Następnie możemy sprawdzić, czy w tych indeksów, x jest rzeczywiście 8 i 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
Ewentualnie, jeśli nie trzeba korzystać z indeksów, ale po prostu elementy można zrobić
> 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
można spróbować operatora |
dla krótkich warunkach
which(x == 8 | x == 9)
grepl
może przydatna funkcja. Zauważ, że grepl
pojawia się w wersjach R 2.9.0 i nowszych. To, co jest przydatne w przypadku grepl
polega na tym, że zwraca wektor logiczny o tej samej długości co 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
Aby dotrzeć na odpowiedź, można wykonać następujące czynności
grepl(8,x) | grepl(9,x)
Lubię również grepl, świetne do filtrowania ramek danych na ciągach tekstowych itp. Dzięki za przykład OR - myślałem, że to będzie takie proste , ale wciąż próbowałem '||", która jest niewłaściwą składnią. – atomicules
To bardzo niebezpieczne rozwiązanie. 'grepl (9, c (9, 99, 654649))' zwróci 'TRUE' dla wszystkich z nich. Trzeba bardzo uważać na dokładne dopasowania i wyrażenie regularne. –
Ale załóżmy Szukam konkretnych indeksów dwóch wartości bez ich zleceń posortowanych. Jak uzyskać wynik "26, 1" zamiast "1, 26", jeśli szukam indeksów Z i A w alfabecie? _which (litery% w% c ("z", "a")) _ – dasf