如何在 R 中使用 gsub 从字符串中删除非数字字符?
Posted
技术标签:
【中文标题】如何在 R 中使用 gsub 从字符串中删除非数字字符?【英文标题】:How can I remove non-numeric characters from strings using gsub in R? 【发布时间】:2019-03-14 08:08:42 【问题描述】:我使用 R 中的 gsub
函数来删除数字中不需要的字符。所以我应该从字符串中删除每个不是数字的字符.
和-
。我的问题是正则表达式没有删除一些非数字字符,如d
、+
和<
。
以下是我的正则表达式、gsub
执行及其输出。如何更改正则表达式以获得所需的输出?
当前输出:
gsub(pattern = '[^(-?(\\d*\\.)?\\d+)]', replacement = '', x = c('1.2<', '>4.5', '3+.2', '-1d0', '2aadddab2','1.3h'))
[1] "1.2<" ">4.5" "3+.2" "-1d0" "2ddd2" "1.3"
期望的输出:
[1] "1.2" "4.5" "3.2" "-10" "22" "1.3"
谢谢。
【问题讨论】:
使用gsub("-", "+", x, fixed=TRUE)
只要去掉?
使用gsub(pattern = '-', replace='+', x = c('a', 'bc', '-'))
如果您将[]
包裹在您想要查找的内容周围,它会起作用:gsub(pattern = '[-?]', replace='+', x = c('a', 'bc', '-'))
不是一个有用的评论@StanislausStadlmann。应该是gsub(pattern = '[-]', replace='+', x = c('a', 'bc', '-'))
。他不打算匹配可能的?
字符。
gsub("[^0-9.-]", "", x)
【参考方案1】:
简单使用
gsub("[^0-9.-]", "", x)
如果有多个-
和.
,您可以使用第二个正则表达式来处理它。
如果您对此感到困惑,请提出一个新问题。
(如果需要,请确保将.
更改为,
)
【讨论】:
如果你有多个替换实例,可以使用dplyr
的str_replace_all
。
这实际上可以通过stringr
包获得。以上是关于如何在 R 中使用 gsub 从字符串中删除非数字字符?的主要内容,如果未能解决你的问题,请参考以下文章