繁体   English   中英

如何使用R中的gsub()函数替换“+”

[英]How to replace '+' using gsub() function in R

我正在尝试删除数据框的一个字符串元素中存在的“+”字符。 但我无法找到解决方法。

下面是数据框。

txtdf <- structure(list(ID = 1:9, Var1 = structure(c(1L, 1L, 1L, 1L, 4L, 
            5L, 5L, 2L, 3L), .Label = c("government", "parliament", "parliment", 
            "poli+tician", "politician"), class = "factor")), .Names = c("ID", 
            "Var1"), class = "data.frame", row.names = c(NA, -9L))
#  ID   Var1
#  1    government
#  2    government
#  3    government
#  4    government
#  5    poli+tician
#  6    politician
#  7    politician
#  8    parliament
#  9    parliment

我尝试了两种方法,它们都没有给出预期的结果:

WAY1

txtdf <- gsub("[:punct:]","", txtdf)
# [1] "goverme" "goverme" "goverme" "goverme" "oli+iia" "oliiia"  "oliiia" 
# [8] "arliame" "arlime" 

我不明白这里有什么问题。 我希望'+'字符单独替换为第5个元素没有值,但所有元素都按上面的方式编辑。

Way2

txtdf<-gsub("*//+","",txtdf)
# [1] "government"  "government"  "government"  "government"  "poli+tician"
# [6] "politician"  "politician"  "parliament"  "parliment" 

这里根本没有变化。 我想我试过的是,我试图用双斜线逃避+字符。

只需将其替换为fixed = TRUE (不需要使用正则表达式),但您必须通过指定列名来替换data.frame的每个“列”:

txtdf <- data.frame(job = c("government", "poli+tician", "parliament"))
txtdf

          job
1  government
2 poli+tician
3  parliament

现在替换“+”:

txtdf$job <- gsub("+", "", txtdf$job, fixed = TRUE)
txtdf

结果是:

         job
1 government
2 politician
3 parliament

你需要逃避你的加号,“+”具有特殊意义(它是量词),当涉及到正则表达式,因此不能被视为标点符号,来自文档: ?regex

“+”前一项将匹配一次或多次。

为了匹配这些特殊字符,你需要逃避它们,以便它们的含义可以从字面上理解,因此它们的特殊含义不会被翻译。 在R中你需要两个反斜杠(\\)才能逃脱。 所以在你的情况下,这将是这样的:

gsub("\\+","",df$job)

通过从数据中删除所有加号,上面运行将为您提供所需的结果。

所以假设你的df是:

df <- data.frame(job = c("government", "poli+tician","politician", "parliament"))

然后你的输出将是:

> gsub("\\+","",df$job)
[1] "government" "politician" "politician"
[4] "parliament"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM