Сопоставление строк в столбцах в R

У меня есть фрейм данных с двумя столбцами символов. Я хотел бы найти строки, в которых один столбец содержит другой, однако grepl ведет себя странно. Любые идеи?

> ( 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

но я хочу Т Ф Ф Т

Спасибо.


person novembera    schedule 29.10.2009    source источник


Ответы (2)


Благодаря предложению Кевина использовать apply,

> mapply(grepl,df$letter,df$food)

приводит к желаемому результату.

person novembera    schedule 30.10.2009

Когда я запускаю ваш код, я получаю предупреждение:

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

Это подтверждает ?grepl под pattern:

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

Таким образом, grepl находит a как в яблоке, так и в груше. Это не решает вашу проблему (применить или один из ее вариантов?), но объясняет результат, который вы получаете.

person kmm    schedule 30.10.2009
comment
Спасибо. Судя по всему, это предупреждение появилось в версии R 2.10.0. - person novembera; 30.10.2009
comment
Я использую: R версии 2.10.0 Исправлено (2009-10-28 r50254) x86_64-apple-darwin9.8.0 - person kmm; 30.10.2009