gpt4 book ai didi

r - 在 R 中使用 AND 和 OR bool 运算符检测字符串

转载 作者:行者123 更新时间:2023-12-03 22:04:24 25 4
gpt4 key购买 nike

我有这样的文字:

text = 'I love apple, pear, grape and peach'

如果我想知道文本是否包含 applepear .我可以执行以下操作并且工作正常:
str_detect(text,"apple|pear")
[1] TRUE

我的问题是,如果我想使用这样的 bool 值怎么办 (apple OR pear) AND (grape) .
反正我可以把它放在 str_detect() .那可能吗?
以下是 不是 在职的:
str_detect(text,"(apple|pear) & (grape)" )
[1] FALSE

我想知道这一点的原因是我想编程以转换“ bool 查询”并输入 grepstr_detect .就像是:
str_detect(text, '(word1|word2) AND (word2|word3|word4) AND (word5|word6) AND .....')

数量 AND因人而异....

多个 str_detect 无解请。

最佳答案

您可以将所有模式作为向量传递给 str_detect 并检查它们是否都是 TRUEall .

patterns <- c('apple|pear', 'grape')
all(str_detect(text, patterns))

或与基地 R
all(sapply(patterns, grepl, x = text))

或者,您可以将模式放在列表中并使用映射,这将为 OR(或您可能想要作为列表元素放置的任何其他内容)提供更详细的输出
patterns <- list(c('apple', 'pear'), 'peach')
patterns %>%
map(str_detect, string = text)

# [[1]]
# [1] TRUE TRUE
#
# [[2]]
# [1] TRUE

也可以将其写为单个正则表达式,但我认为没有理由这样做
patterns <- c('apple|pear', 'grape')
patt_combined <- paste(paste0('(?=.*', patterns, ')'), collapse = '')
str_detect(text, patt_combined)
patt_combined
# [1] "(?=.*apple|pear)(?=.*grape)"

关于r - 在 R 中使用 AND 和 OR bool 运算符检测字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57980271/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com