在 R 中用 5 替换 +

Replacing + by 5 in R

我有一个名为 Price 的数据集,它应该是数字但生成为字符串,因为所有 5 都被 + 替换了。

看起来像这样:

"99000"    "98300"    "98300"    "98290"    "98310"    "  9831+ " "98310"    "  9830+ " "  9830+ " "  9830+ " "  9829+ " "  9828+ " "  9827+ " "98270" 

我在 R 中使用 gsub 函数尝试将 + 替换为 5。我编写的代码是:

finalPrice<-gsub("+",5,Price)

但是,输出只是一堆数字,对我的意图没有意义:

"59595050505,5 59585350505,5 59585350505,5 59585259505,5 59585351505,5 5 5 595853515+5 5,5 59585351505,5 5 5 595853505+5 5,5 5 5 595853505+5

我该如何解决这个问题?

应该转义 + 号。试试这个:

finalPrice<-gsub("\+",5, Price)

写正则表达式时,+表示匹配前一组一次或多次。由于前面的字符在 + 为空之前位于您的正则表达式中,因此 gsub 匹配目标中的每个空字符串。

结果是5被插入到每个位置。

为避免这种情况,转义 +,这需要在 R:

中使用双反斜杠来完成

finalPrice<-gsub("\+",5,Price)

除了使用双转义强制文字-x与模式参数匹配外,您还可以使用fixed=TRUE参数或使用字符-class由“[.]”操作定义。有关详细信息,请参阅 ?regex 页面:

> gsub("+", "5", txt, fixed=TRUE)
 [1] "99000"    "98300"    "98300"    "98290"    "98310"   
 [6] "  98315 " "98310"    "  98305 " "  98305 " "  98305 "
[11] "  98295 " "  98285 " "  98275 " "98270"   
> gsub("[+]", "5", txt)
 [1] "99000"    "98300"    "98300"    "98290"    "98310"   
 [6] "  98315 " "98310"    "  98305 " "  98305 " "  98305 "
[11] "  98295 " "  98285 " "  98275 " "98270"