sustraer - separar cadena de caracteres en r
Cómo filtrar un vector de cadenas en R basado en la coincidencia de cadenas (4)
La documentación en el paquete stringr
dice: " str_subset()
es un envoltorio alrededor de x[str_detect(x, pattern)]
, y es equivalente a grep(pattern, x, value = TRUE)
. str_which()
es un envoltorio alrededor del which(str_detect(x, pattern))
, y es equivalente a grep(pattern, x)
".
Entonces, en su caso, la manera más elegante de realizar su tarea utilizando tidyverse
lugar de base R es la siguiente.
library(tidyverse) c("mama.log", "papa.log", "mimo.png", "mentor.log") %>% str_subset(pattern = "^m.*//.log")
que produce la salida:
[1] "mama.log" "mentor.log"
Tengo el siguiente vector en R:
X <- c("mama.log", "papa.log", "mimo.png", "mentor.log")
¿Cómo recupero otro vector que solo contiene elementos que comienzan con "m" y terminan con ".log"?
Prueba esto:
grep("^m.*[.]log$", X, value = TRUE)
## [1] "mama.log" "mentor.log"
Una variación de esto es usar un glob en lugar de una expresión regular:
grep(glob2rx("m*.log"), X, value = TRUE)
## [1] "mama.log" "mentor.log"
Puedes usar grepl
con expresiones regulares:
X[grepl("^m.*//.log", X)]
Usando tuberías ...
library(tidyverse)
c("mama.log", "papa.log", "mimo.png", "mentor.log") %>%
.[grepl("^m.*//.log$", .)]
[1] "mama.log" "mentor.log"