当变量包含向量中的任何一个元素时,我如何 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 TRUE
或 FALSE
如果 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
我有一个向量:
v <- c("apple","banana","orange")
我想在我的数据集中搜索一个列,并且 return TRUE
或 FALSE
如果 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