Supponiamo che io ho il seguente vettore:Trovare più elementi in un vettore
> 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
Come posso trovare gli elementi che sono o 8 o 9?
Supponiamo che io ho il seguente vettore:Trovare più elementi in un vettore
> 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
Come posso trovare gli elementi che sono o 8 o 9?
Questo è un modo per farlo. In primo luogo ho gli indici in cui X è 8 o 9. Poi si può verificare che in tali indici, x è infatti 8 e 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
Alternativamente, se non è necessario utilizzare gli indici, ma solo gli elementi che possono fare
> 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
si potrebbe provare l'operatore |
per condizioni di corto
which(x == 8 | x == 9)
grepl
forse una funzione utile. Notare che grepl
viene visualizzato nelle versioni di R 2.9.0 e successive. Quello che è utile su grepl
è che restituisce un vettore logico della stessa lunghezza di 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
per arrivare a risposta, si potrebbe fare la seguente
grepl(8,x) | grepl(9,x)
Mi piace anche grepl, ottimo per filtrare i dati su stringhe di testo, ecc. Grazie per l'esempio OR - ho pensato che sarebbe stato così semplice , ma ho continuato a provare '||' che è la sintassi sbagliata. – atomicules
Questa è una soluzione molto pericolosa. 'grepl (9, c (9, 99, 654649))' restituirà 'TRUE' per tutti questi. Si dovrebbe fare molta attenzione con corrispondenze esatte e regex. –
Ma supponiamo che sto cercando gli indici specifici dei due valori senza i loro ordini ordinati. Come potrei ottenere un risultato di "26, 1" invece di "1, 26" se sto cercando gli indici di Z e A nell'alfabeto? _which (lettere% in% c ('z', 'a')) _ – dasf