Pregunta

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

¿Fue útil?

Solución

Tanto el match() (devuelve la primera aparición) y %in% (devuelve un booleano) funciones están diseñados 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

Otros consejos

is.element() hace para el código más legible, y es idéntica 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

La cualquier () función lo convierte en un 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

voy a las opciones de grupo basada en la producción. Supongamos 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

is.element ()

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

Para encontrar la primera ocurrencia:

match ()

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

Para encontrar todas las apariciones como vector de índices:

que ()

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

Para encontrar todas las apariciones como vector lógico

==

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

Editar: Extracción grep () y Grepl () de la lista para la razón mencionada en los comentarios

Puede utilizar el operador %in%:

vec <- c(1, 2, 3, 4, 5)
1 %in% vec # true
10 %in% vec # false

Además de encontrar la posición del elemento "que" se puede utilizar como

pop <- c(3,4,5,7,13)

which(pop==13)

y encontrar los elementos que no están contenidas en el vector objetivo, se puede hacer esto:

pop <- c(1,2,4,6,10)

Tset <- c(2,10,7)   # Target set

pop[which(!(pop%in%Tset))]

A mi me gusta grep () y () Grepl para este propósito.

grep () devuelve un vector de enteros, que indican dónde partidos son.

yo <- c("a", "a", "b", "b", "c", "c")

grep("b", yo)
[1] 3 4

Grepl () devuelve un vector lógico, con "TRUE" en la ubicación de cerillas.

yo <- c("a", "a", "b", "b", "c", "c")

grepl("b", yo)
[1] FALSE FALSE  TRUE  TRUE FALSE FALSE

Estas funciones son mayúsculas y minúsculas.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top