在R中的列之间匹配字符串

时间:2009-10-29 23:50:05

标签: r mapping

我有一个包含2个字符列的数据框。我想找到一列包含另一列的行,但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

但我想要T F F T

感谢。

2 个答案:

答案 0 :(得分:5)

感谢Kevin建议使用apply,

  

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

产生所需的输出。

答案 1 :(得分:2)

当我运行你的代码时,我收到一个警告:

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。这不能解决您的问题(应用或其变体之一?),但它确实解释了您获得的输出。