给定以下代码:
list = c("the", "at", "ok")
paragraph = "the cat ath the hat is ok"
如何从“段落”中删除列表中的所有单词?
我试着做:
gsub(list, '', paragraph)
但只删除了列表的第一项。我知道这不应该很复杂,但这仍然让我感到困惑。我也想避免使用 for 循环,但 apply 系列应该没问题。
该模式"(the|at|ok)"
将匹配列表中任何字符串的出现。
听起来,虽然,你想匹配那些实际的单词而不是它们所属的单词(即匹配“the”但不匹配“then”,“at”但不匹配“rattle”等)如果是这样的话,您可以改为使用模式"\\b(the|at|ok)\\b"
("\\b"
在单词边界匹配的模式在哪里)。
您可以使用paste0()
从任意匹配词向量构造所需的模式:
list <- c("the", "at", "ok")
paragraph <- "the cat ath the hat is ok"
## Construct the regular expression
pat <- paste0("\\b(", paste0(list, collapse="|"), ")\\b")
pat
# [1] "\\b(the|at|ok)\\b"
## Use it
gsub(pat, "", paragraph)
# [1] " cat ath hat is "