2009-10-29 8 views
5

Tengo un marco de datos con 2 columnas de caracteres. Me gustaría encontrar las filas que una columna contiene la otra, sin embargo, grepl es extraño. ¿Algunas ideas?Cadenas coincidentes entre columnas en R

> (df <- data.frame(letter=c('a','b'),food = c('apple','pear','bun','beets'))) 
    letter food 
1  a apple 
2  b pear 
3  a bun 
4  b beets 

> grepl(df$letter,df$food) 

[1] TRUE TRUE FALSE FALSE 

pero quiero V F F V

Gracias.

Respuesta

5

Gracias a la sugerencia de utilizar Kevin aplicar,

> mapply (Grepl, df $ carta, df $ alimenticios)

resultados en la salida deseada.

2

Cuando ejecuto el código, recibo una advertencia:

Warning message: 
In grepl(df$letter, df$food) : 
    argument 'pattern' has length > 1 and only the first element will be used 

Esto es confirmado por ?grepl bajo pattern:

If a character vector of length 2 or more is supplied, 
the first element is used with a warning. 

Así Grepl es encontrar el un tanto en manzana y pera. Esto no resuelve su problema (¿se aplica o una de sus variantes?), Pero sí explica el resultado que obtiene.

+0

Gracias. Aparentemente, la advertencia es nueva en la versión R 2.10.0. – novembera

+0

Estoy usando: R versión 2.10.0 Parcheado (2009-10-28 r50254) x86_64-apple-darwin9.8.0 – kmm

Cuestiones relacionadas