Probar si un vector contiene un elemento dado

Resuelto medriscoll asked hace 54 años • 8 respuestas

¿Cómo comprobar si un vector contiene un valor determinado?

medriscoll avatar Jan 01 '70 08:01 medriscoll
Aceptado

Tanto la función match()(devuelve la primera aparición) como %in%(devuelve un booleano) están diseñadas para esto.

v <- c('a','b','c','e')

'b' %in% v
## returns TRUE

match('b',v)
## returns the first location of 'b', in this case: 2
medriscoll avatar Jul 23 '2009 02:07 medriscoll

is.element()hace que el código sea más legible y es idéntico a%in%

v <- c('a','b','c','e')

is.element('b', v)
'b' %in% v
## both return TRUE

is.element('f', v)
'f' %in% v
## both return FALSE

subv <- c('a', 'f')
subv %in% v
## returns a vector TRUE FALSE
is.element(subv, v)
## returns a vector TRUE FALSE
Justin Nafe avatar Oct 02 '2013 12:10 Justin Nafe

Agruparé las opciones según el resultado. Suponga el siguiente vector para todos los ejemplos.

v <- c('z', 'a','b','a','e')

Para comprobar la presencia:

%en%

> 'a' %in% v
[1] TRUE

cualquier()

> any('a'==v)
[1] TRUE

es.elemento()

> is.element('a', v)
[1] TRUE

Para encontrar la primera aparición:

fósforo()

> match('a', v)
[1] 2

Para encontrar todas las ocurrencias como vector de índices:

cual()

> which('a' == v)
[1] 2 4

Para encontrar todas las ocurrencias como vector lógico :

==

> 'a' == v
[1] FALSE  TRUE FALSE  TRUE FALSE

Editar: Eliminar grep() y grepl() de la lista por el motivo mencionado en los comentarios

ishandutta2007 avatar Jun 07 '2017 12:06 ishandutta2007

La función any() crea código legible

> w <- c(1,2,3)
> any(w==1)
[1] TRUE

> v <- c('a','b','c')
> any(v=='b')
[1] TRUE

> any(v=='f')
[1] FALSE
Dan Goldstein avatar Aug 20 '2009 22:08 Dan Goldstein

Puedes utilizar el %in%operador:

vec <- c(1, 2, 3, 4, 5)
1 %in% vec # true
10 %in% vec # false
ars avatar Jul 23 '2009 02:07 ars