una sustraer separar palabra longitud funcion faltantes extraer datos data caracteres cadena buscar r vector indexing slice

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"