我的问题是如何做 [this question][1] 的答案,但只有当模式以字符串结尾结束时才匹配。
我的想法是在模式之后添加 $,以指示行尾,例如:
removePunctuation <- function(punctuationObject){
itemsToBeRemoved <- c(".", ",", ";", ":", "'", "!", "#", "-", "--")
resultObject <- punctuationObject
for (itemToReplace in itemsToBeRemoved){
resultObject <- gsub(itemToReplace$, "", resultObject, fixed = TRUE)
}
resultObject
}
但它不起作用。我尝试了同一件事的许多变体,但在声明可变模式(例如“itemToReplace”)后,我无法将 $ 读取为正则表达式。 [1]: For 循环遍历要在 R 的 gsub 中使用的项目列表
首先,您可以使用
sub
代替gsub
。其次,您需要将 $
粘贴到 itemsToBeRemoved 的末尾。但是由于 $
是元字符,您不能在 fixed=TRUE
调用中使用 gsub
。该问题的一种解决方案是将标点符号项包含在[]
:中
removePunctuation <- function(punctuationObject){
itemsToBeRemoved <- c(".", ",", ";", ":", "'", "!", "#", "-", "--")
resultObject <- punctuationObject
for (itemToReplace in itemsToBeRemoved){
resultObject <- sub(paste0("[", itemToReplace, ']$'), "", resultObject)
}
resultObject
}
测试:
removePunctuation("Hello, I use R.")
# [1] "Hello, I use R"
我会使用
sub
来 删除行尾的变量.
s <- c("x", ".x", "x.", "x--x", "x--", "x---")
sub("(--|[.,;:'!#-])$", "", s)
#[1] "x" ".x" "x" "x--x" "x" "x-"