我想使用str_extract_all从包含错误描述的电子表格的许多列中提取特定的文本字符串。样本列表:
fire_match <- c('fire', 'burned', 'burnt', 'burn', 'injured', 'injury', 'hurt', 'dangerous',
'accident', 'collided', 'collide', 'crashed', 'crash', 'smolder', 'flame', 'melting',
'melted', 'melt', 'danger')
我的代码在技术上可以实现预期的功能,但是我也正在从“ misfire”中提取“ fire”。这是不正确的。我也很难提取不区分大小写的结果。
这是一个让我90%达到目标的直接示例:
fire$Cause.Trigger <- str_extract_all(CAUSE_TEXT, paste(fire_match, collapse="|") )
我想要的结果是:
CAUSE_TEXT <- c("something caught fire", "something misfired",
"something caught Fire", "Injury occurred")
答案 0 :(得分:2)
您只需在个人条款中添加\b
,以确保它们与单词边界匹配。
pattern <- paste0("\\b", paste(fire_match , collapse="\\b|\\b"), "\\b")
str_extract_all(CAUSE_TEXT, regex(pattern, ignore_case = TRUE))
# [[1]]
# [1] "fire"
# [[2]]
# character(0)
# [[3]]
# [1] "Fire"
# [[4]]
# [1] "Injury"