Supongamos que tengo el siguiente vector:múltiples elementos en un vector
> 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
¿Cómo puedo saber qué elementos son 8 o 9?
Supongamos que tengo el siguiente vector:múltiples elementos en un vector
> 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
¿Cómo puedo saber qué elementos son 8 o 9?
Esta es una forma de hacerlo. En primer lugar consigo los índices en los que x es 8 o 9. A continuación, podemos comprobar que en esos índices, x es de hecho 8 y 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
alternativa, si no es necesario utilizar los índices, pero sólo los elementos que pueden hacer
> 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
puede probar con el operador |
para condiciones cortos
which(x == 8 | x == 9)
grepl
tal vez una función útil. Tenga en cuenta que grepl
aparece en las versiones de R 2.9.0 y posteriores. Lo útil de grepl
es que devuelve un vector lógico de la misma longitud que 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
para llegar a su respuesta, usted podría hacer lo siguiente
grepl(8,x) | grepl(9,x)
También me gusta grepl, ideal para filtrar marcos de datos en cadenas de texto, etc. Gracias por el ejemplo O: pensé que sería así de simple , pero seguí intentando '||' que es la sintaxis incorrecta. – atomicules
Esta es una solución muy peligrosa. 'grepl (9, c (9, 99, 654649))' devolverá 'TRUE' para todos estos. Uno debe tener mucho cuidado con las coincidencias exactas y expresiones regulares. –
Pero supongamos que estoy buscando los índices específicos de dos valores sin sus pedidos ordenados. ¿Cómo obtendré un resultado de "26, 1" en lugar de "1, 26" si estoy buscando los índices de Z y A en el alfabeto? _which (letras% en% c ('z', 'a')) _ – dasf