当变量包含向量中的任何一个元素时,我如何 return 布尔值?

How can I return a boolean when a variable contains any one of the elements of my vector?

我有一个向量:

v <- c("apple","banana","orange")

我想在我的数据集中搜索一个列,并且 return TRUEFALSE 如果 any 的元素 v 存在。

举个例子:

mystring <- "I have a grape but I have nothing else except an apple"  

我想到的解决办法是用str_count统计我的向量元素在mystring中出现的次数,然后mutate根据计数得到我的boolean值——即,使用 case_when count > 0 和 count == 0).

这似乎是一个糟糕的方法。如果能提供一些更好的方法来执行此操作,我将不胜感激。

我们可以将'v'中的元素粘贴到一个字符串中,然后使用str_detect

library(stringr)
str_detect(mystring, str_c("\b(", str_c(v, collapse="|"), ")\b"))
[1] TRUE

我们可以创建一个模式然后使用 grepl:

pattern <- paste(v, collapse = "|")
grepl(pattern, mystring)

[1] TRUE