strings funcion from first characters regex r substr

regex - funcion - extraer una subcadena en R de acuerdo con un patrón



select string r (4)

Aquí hay algunas maneras:

1) sub

sub(".*:", "", string) ## [1] "E001" "E002" "E003"

2) strsplit

sapply(strsplit(string, ":"), "[", 2) ## [1] "E001" "E002" "E003"

3) read.table

read.table(text = string, sep = ":", as.is = TRUE)$V2 ## [1] "E001" "E002" "E003"

4) subcadena

Esto supone que la segunda parte siempre comienza en el cuarto carácter (que es el caso en el ejemplo de la pregunta):

substring(string, 4) ## [1] "E001" "E002" "E003"

4a) subcadena / expresión regular

Si los dos puntos no estuvieran siempre en una posición conocida, podríamos modificar (4) buscándolo:

substring(string, regexpr(":", string) + 1)

5) strapplyc

strapplyc devuelve la parte entre paréntesis:

library(gsubfn) strapplyc(string, ":(.*)", simplify = TRUE) ## [1] "E001" "E002" "E003"

6) read.dcf

Este solo funciona si las subcadenas anteriores al colon son únicas (que están en el ejemplo de la pregunta). También requiere que el separador sea dos puntos (que está en la pregunta). Si se utilizara un separador diferente, podríamos usar sub para reemplazarlo primero con dos puntos. Por ejemplo, si el separador fuera _ entonces string <- sub("_", ":", string)

c(read.dcf(textConnection(string))) ## [1] "E001" "E002" "E003"

ADICIONAL. soluciones strapplyc y read.dcf .

NOTA.

La string entrada se supone que es:

string <- c("G1:E001", "G2:E002", "G3:E003")

Supongamos que tengo una lista de cadenas: string = c("G1:E001", "G2:E002", G3:E003) . Ahora espero obtener un vector de cadena que contenga solo las partes después del punto ":", es decir, substring = c(E001,E002,E003) . ¿Hay una manera conveniente en R para hacer esto? ¿Usando substr ? ¡Gracias!


Aquí hay otra respuesta simple

gsub("^.*:","", string)


Esto debería hacer:

gsub("[A-Z][1-9]:", "", string)

da

[1] "E001" "E002" "E003"


Por ejemplo, usando gsub o sub

gsub(''.*:(.*)'',''//1'',string) 1] "E001" "E002" "E003"