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