【发布时间】:2017-10-13 10:32:28
【问题描述】:
我正在尝试删除数据框的字符串元素之一中存在的“+”字符。但我找不到解决办法。
下面是数据框。
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
我尝试了两种方法,都没有给出预期的结果:
方式1
txtdf <- gsub("[:punct:]","", txtdf)
# [1] "goverme" "goverme" "goverme" "goverme" "oli+iia" "oliiia" "oliiia"
# [8] "arliame" "arlime"
我不明白这里有什么问题。我希望仅将第 5 个元素的“+”字符替换为无值,但所有元素均按上述方式进行编辑。
方式2
txtdf<-gsub("*//+","",txtdf)
# [1] "government" "government" "government" "government" "poli+tician"
# [6] "politician" "politician" "parliament" "parliment"
这里根本没有变化。我想我尝试过的是,我尝试使用双斜杠转义 + 字符。
【问题讨论】:
-
转义是使用`\`完成的。
-
或者只是把它放在一个字符类中:
"[+]"。由于+(1 个或更多)在字符类中没有特殊含义,因此不需要转义。 -
或使用
fixedargument:gsub("+", "", txtdf$varname, fixed=TRUE) -
解决方案很简单,但您的尝试很有趣。您是要删除任何标点符号还是仅删除加号?
-
@RYoda - 已复制,在我以后的问题中肯定会这样做。