2009-10-29 15 views
5

Mam ramkę danych z kolumnami 2-znakowymi. Chciałbym znaleźć wiersze, które jedna kolumna zawiera drugą, jednak grepl jest dziwny. Jakieś pomysły?Dopasowywanie ciągów znaków w kolumnach w 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 

ale chcę T K T

Dzięki.

Odpowiedz

5

Dzięki sugestii Kevina do wykorzystania zastosować,

> mapply (Grepl, df $ list, df $ żywności)

wyników w pożądanym wyjściem.

2

Kiedy uruchomić kod, pojawia się ostrzeżenie:

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

Potwierdzają to ?grepl pod pattern:

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

Więc Grepl jest znalezienie A zarówno jabłka i gruszki. To nie rozwiązuje twojego problemu (zastosowanie lub jeden z jego wariantów?), Ale wyjaśnia to, co otrzymujesz.

+0

Dzięki. Podobno ostrzeżenie jest nowe w wersji R 2.10.0. – novembera

+0

Używam: R wersja 2.10.0 Poprawka (2009-10-28 r50254) x86_64-apple-darwin9.8.0 – kmm

Powiązane problemy