如何从R中的数据/转义特殊字符中剥离美元符号($)



我一直在使用gsub("toreplace","replacement", myvector)来清除r中的数据,而这适用于逗号等,删除"$"没有效果。因此,如果我执行gsub("$","",myvector),所有的美元符号都保持不变。

我认为这是因为$是r中的一个特殊字符。我试图转义它"$",但产生相同的结果(没有效果)。我找不到关于r中转义特殊字符的资源。

显然,我应该在预处理中这样做。但是我想知道是否有人知道如何a)转义R中的特殊字符b)直接在R中摆脱讨厌的$。为科学。

必须转义两次,第一次是R,第二次是regex。

gsub('\$', '', c("a$a", "bb$"))
[1] "aa" "bb"

关于引号和转义的详细信息请参见?Quotes

使用fixed = TRUE:

gsub('$', '', c("a$a", "bb$"), fixed = TRUE)

那么你就不用担心任何特殊字符了。在stringr中,这个实现略有不同:

library(stringr)
str_replace_all(c("$100","ta$ty"), fixed("$"), "")

感谢DiggyF和James的例子!

转义字符有时会很麻烦,但只需将其放在方括号中(使其成为字符类)就可以解决这个问题:

> gsub("[$]","",c("$100","ta$ty"))
[1] "100"  "taty"

如果你在一组数据列中有$后跟数字(例如$400,000),有一种更简单的方法对我来说很有吸引力。数据%> %mutate_at (5:6, parse_number)其中5:6为数据列号。

最新更新