相关疑难解决方法(0)

如何在R中使用带有`grep`的引用?

我正在寻找一种使用R中的正则表达式返回引用的优雅方法.我解释一下:

假设我想找到以月名开头的字符串:

x <- c("May, 1, 2011", "30 June 2011")
grep("May|^June", x, value=TRUE)
[1] "May, 1, 2011"
Run Code Online (Sandbox Code Playgroud)

这有效,但我真的想隔离月份(即"五月",而不是整个匹配的字符串.

因此,可以使用参数gsub返回后向引用substitute.但这有两个问题:

  1. 你必须将模式包装在".*(pattern).*)"中,以便在整个字符串上进行替换.
  2. 而不是为非匹配字符串返回NA,而是gsub返回原始字符串.这显然不是我想要的:

代码和结果:

gsub(".*(^May|^June).*", "\\1", x) 
[1] "May"          "30 June 2011"
Run Code Online (Sandbox Code Playgroud)

我可以通过执行各种额外的检查来编写解决方法,但这很快变得非常混乱.

为了清楚起见,期望的结果应该是:

[1] "May"          NA
Run Code Online (Sandbox Code Playgroud)

有没有一种简单的方法来实现这一目标?

regex grep r gsub

15
推荐指数
2
解决办法
4407
查看次数

标签 统计

grep ×1

gsub ×1

r ×1

regex ×1