我正在尝试使用filter(grepl())来匹配我专栏中的一些单词。让我们假设我想提取“瓜特尔”这个词。在我的专栏中,我有“卫报”、“卫报”和“担保书”等变体。为了匹配大写/小写单词,我使用了(?i)。然而,我还没有找到一个很好的方法来匹配口音/无口音(即“卫报”和“卫报”)。
我知道我可以简单地用á代替a,但是在代码中是否有一种分配重音不敏感的方法呢?它可以是基R/tidyverse/任何,我不介意。
以下是我现在的代码行:
cobras <- final %>% filter(grepl("(?i)guartelá", NAME)
| grepl("(?i)guartelá", locality))干杯
发布于 2022-11-21 15:58:46
可以在OR语句中传递选项,使用[捕获不同的组合
> string <- c("Guartelá", "Guartela", "guartela", "guartelá", "any")
> grepl("[Gg]uartel[aá]", string)
[1] TRUE TRUE TRUE TRUE FALSE发布于 2022-11-21 16:14:35
您可以使用stri_trans_general fron删除所有重音:
unaccent_chars= stringi::stri_trans_general(c("guartelá","with_é","with_â","with_ô") ,"Latin-ASCII")
unaccent_chars
# [1] "guartela" "with_e" "with_a" "with_o"
# grepl(paste(unaccent_chars,collapse = "|"), string) 发布于 2022-11-21 15:59:45
使用str_detect()的另一个选项
library(tidyverse)
tibble(name = c("guartela","guartelá", "Guartela", "Other")) |>
filter(str_detect(name, "guartela|guartelá|Guartela"))https://stackoverflow.com/questions/74521588
复制相似问题