2009-10-29 23 views
5

Ho un frame di dati con colonne di 2 caratteri. Mi piacerebbe trovare le righe in cui una colonna contiene l'altra, tuttavia grepl è strano. Qualche idea?Corrispondenza tra stringhe su colonne in 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 

ma voglio T F F T

Grazie.

risposta

5

Grazie al suggerimento di Kevin uso applicare,

> mapply (Grepl, df $ lettera, df $ alimentari)

risultati in uscita desiderata.

2

Quando eseguo il codice, ottengo un avvertimento:

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

Ciò è confermato dal ?grepl sotto pattern:

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

Così Grepl sta trovando l'una sia mela e pera. Questo non risolve il tuo problema (si applica o una delle sue varianti?), Ma spiega l'output che stai ottenendo.

+0

Grazie. Apparentemente l'avviso è nuovo nella versione R 2.10.0. – novembera

+0

Sto usando: R versione 2.10.0 Patched (2009-10-28 r50254) x86_64-apple-darwin9.8.0 – kmm

Problemi correlati