Busco una manera elegante de regresar de nuevo las referencias que utilizan expresiones regulares en R. Le explico:¿Cómo puedo usar referencias anteriores con `grep` en R?
Digamos que quiero encontrar cadenas que comienzan con un nombre de mes:
x <- c("May, 1, 2011", "30 June 2011")
grep("May|^June", x, value=TRUE)
[1] "May, 1, 2011"
Estos trabajos , pero realmente desee aislar el mes (es decir, "mayo", no toda la cadena coincidente
Por lo tanto, se puede utilizar gsub
para devolver la referencia hacia atrás utilizando el parámetro substitute
pero esto tiene dos problemas:..
- Tienes que envolver el patrón dentro de ". * (Patrón). *)" Para que la sustitución se produzca en toda la cadena.
- En lugar de devolver NA para cadenas no coincidentes,
gsub
devuelve la cadena original. Esto claramente no es lo que deseo:
el código y los resultados:
gsub(".*(^May|^June).*", "\\1", x)
[1] "May" "30 June 2011"
probablemente podría codificar una solución haciendo todo tipo de comprobaciones adicionales, pero esto rápidamente se convierte en muy desordenado.
Para ser muy claro, los resultados deseados deben ser:
[1] "May" NA
¿Hay una manera fácil de lograr esto?
Gracias, Hadley. Soy un gran fan de stringr en general. No tengo idea de por qué no pensé en buscar allí primero. D'oh. – Andrie