Я ищу элегантный способ возврата обратных ссылок с помощью регулярных выражений в R. Le me explain:
Допустим, я хочу найти строки, которые начинаются с имени месяца:
x <- c("May, 1, 2011", "30 June 2011")
grep("May|^June", x, value=TRUE)
[1] "May, 1, 2011"
Это работает, но я действительно хочу изолировать месяц (т.е. "май", а не всю совпадающую строку.
Таким образом, можно использовать gsub
, чтобы вернуть обратную ссылку, используя параметр replace
. Но в этом есть две проблемы:
gsub
возвращает исходную строку. Это явно не то, чего я хочу:Код и результаты:
gsub(".*(^May|^June).*", "\\1", x)
[1] "May" "30 June 2011"
Я, наверное, мог бы кодировать обходной путь, делая всевозможные дополнительные проверки, но это быстро становится очень запутанным.
Чтобы быть кристально ясным, желаемый результат должен быть:
[1] "May" NA
Есть ли простой способ достичь этого?