2012-05-17 13 views
6

Esto debe ser una pregunta simple, pero como un recién llegado R no he podido resolverlo.Cómo comparar vectores de caracteres para coincidencias parciales en R

Tengo dos vectores de caracteres, List1 y List2, y me gustaría saber cuántas de las muestras en List1 también se encuentran en List2. Pero List2 a menudo tiene varios nombres juntos que parece estar arruinando las cosas. Aquí están las listas hipotéticas:

List1 <- c("SampleX", "SampleY", "SampleZ", "SampleQ") 

List2 <- c("SampleX", "SampleY", "Alias1,Alias2,SampleZ") 

puedo conseguir una salida que identifica Samplex y Sampley, pero no SampleZ.

¿Alguna sugerencia?

Gracias!

+1

No está del todo claro cuál es la respuesta. ¿Quieres * detectar * SampleZ? es decir, ¿el resultado de 'f (Lista1, Lista2)' sería 'c (" MuestraX "," MuestraY "," MuestraZ ")'? –

Respuesta

8

¿Qué tal:

List1[sapply(List1,function(x) any(grepl(x,List2)))] 
[1] "SampleX" "SampleY" "SampleZ" 

?

Cuestiones relacionadas