Extraiga números del vector de string de caracteres en R

En este artículo, vamos a ver cómo extraer números de un vector de string de caracteres en el lenguaje de programación R. Existen diferentes enfoques para extraer números de vectores de strings de caracteres utilizando algunas funciones integradas. Se puede hacer de las siguientes maneras:

  • Extraer números de una string de caracteres usando la función gsub()
  • Extraer números de una string de caracteres usando las funciones gregexpr() y regmatches()

Método 1: Usar la función gsub() .

En este método para extraer números del vector de string de caracteres, el usuario debe llamar a la función gsub(), que es una de las funciones incorporadas del lenguaje R, y pasar el patrón para la primera aparición del número en las strings dadas y el vector. de la string como el parámetro de esta función y, a cambio, esta función devolverá al usuario el primer número ocurrido en la string dada.

Función gsub(): esta función se usa para reemplazar buscar todas las coincidencias de una string, si el parámetro es un vector de string, devuelve un vector de string de la misma longitud y con los mismos atributos. 

Sintaxis: gsub(patrón, reemplazo, x, ignore.case = FALSE, perl = FALSE,fixed = FALSE, useBytes = FALSE)

Parámetros:

  • patrón: string que debe coincidir, admite expresiones regulares
  • reemplazo: string para reemplazo
  • x: string o vector de string
  • Perl: lógico. ¿Deberían usarse expresiones regulares compatibles con Perl? Tiene la prioridad demasiado extendida
  • fijo: lógico. Si es VERDADERO, el patrón es una string que debe coincidir tal cual.
  • useBytes: lógico. Si es VERDADERO, la coincidencia se realiza byte por byte en lugar de carácter por carácter.

Para encontrar números en la string, el patrón será:

".*?([0-9]+).*"

Ejemplo:

R

gfg <- c("7g8ee6ks1", "5f9o1r0", "geeks10")           
print(gfg)
  
res = as.numeric(gsub(".*?([0-9]+).*", "\\1", gfg))             
print(res)

Producción:

[1] "7g8ee6ks1" "5f9o1r0"   "geeks10"  
[1]  7  5 10

Método 2: usar las funciones gregexpr() y regmatches()

En este método de extracción de números de una string de caracteres usando la función gregexpr() y regmatches(), donde el usuario necesita llamar a esta función con un parámetro específico y luego, a cambio, esta función devolverá todos los dígitos presentes en los vectores de strings a el usuario.

Función gregexpr(): esta función devuelve una lista de la misma longitud que el texto, cada elemento del cual tiene la misma forma que el valor de retorno de regexpr, excepto que se dan las posiciones iniciales de cada coincidencia (disjunta). 

Sintaxis: gregexpr(patrón, texto, ignore.case = FALSO, perl = FALSO, fijo = FALSO, useBytes = FALSO)

Parámetros:

  • patrón: expresión regular o string para fixed=TRUE
  • texto: string, el vector de caracteres
  • ignore.case: distingue entre mayúsculas y minúsculas o no
  • Perl: lógico. ¿Deberían utilizarse expresiones regulares compatibles con Perl? Tiene prioridad sobre extendido
  • fijo: lógico. Si es VERDADERO, el patrón es una string que debe coincidir tal cual. Anula todos los argumentos en conflicto
  • useBytes: lógico. Si es VERDADERO, la coincidencia se realiza byte por byte en lugar de carácter por carácter.

Función regmatches(): esta función se utiliza para extraer o reemplazar substrings coincidentes de los datos de coincidencia.

Sintaxis: regmatches(x, m, invertir = FALSO)

Parámetros:

  • x:-un vector de caracteres
  • m:-un objeto con datos coincidentes
  • invertir:-a lógico: si es VERDADERO, extrae o reemplaza las substrings que no coinciden.

Ejemplo:

R

gfg <- c("7g8ee6ks1", "5f9o1r0", "geeks10")           
  
gfg_numbers <- regmatches(gfg, gregexpr("[[:digit:]]+", gfg))
as.numeric(unlist(gfg_numbers))

Producción:

[1]  7  8  6  1  5  9  1  0 10

Publicación traducida automáticamente

Artículo escrito por geetansh044 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *