我正在寻找一种优雅的方式使用R中的正则表达式返回引用.我解释:
假设我想要找到以月份名称开头的字符串:
x <- c("May,1,2011","30 June 2011") grep("May|^June",x,value=TRUE) [1] "May,2011"
这是有效的,但我真的想隔离这个月份(即“May”,而不是整个匹配的字符串.
所以,可以使用gsub使用substitute参数返回回参考.但这有两个问题:
>你必须将模式包装在“.*(pattern).*)”中,以便在整个字符串上进行替换.
>而不是返回不匹配字符串的NA,gsub返回原始字符串.这显然不是我想要的:
代码和结果:
gsub(".*(^May|^June).*","\\1",x) [1] "May" "30 June 2011"
我可以通过进行各种额外的检查来编写一个解决方法,但这很快就变得非常混乱.
要清楚,所需的结果应该是:
[1] "May" NA
有没有办法实现这一点?
stringr包具有完全为此目的的功能:
library(stringr) x <- c("May,"30 June 2011","June 2012") str_extract(x,"May|^June") # [1] "May" NA "June"
这是一个围绕regexpr的相当薄的包装器,但是stringr通常使得字符串处理比基本R函数更加一致.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。