8 votos

Generar cadenas aleatorias basadas en expresiones regulares en R

Estoy tratando de generar datos textuales aleatorios basados en expresiones regulares. Me gustaría poder hacer esto en R, ya que sé que R tiene capacidades regex. ¿Alguna pista?

Esta pregunta ya ha surgido antes en foros (Publicación de StackOverflow 1, Publicación de StackOverflow 2, etc.), pero siempre mencionan soluciones basadas en otras plataformas de programación (perl, .NET, ...), no en R.

7voto

NateDSaint Puntos 183

Mientras que generar datos aleatorios a partir de expresiones regulares sería una interfaz conveniente, no está directamente soportado en R. Sin embargo, podrías intentar un nivel de indirección: generar números aleatorios y convertirlos en cadenas. Por ejemplo, para convertir un número en un carácter, podrías usar lo siguiente:

> rawToChar(as.raw(65))
[1] "A"

Al seleccionar cuidadosamente el rango del número aleatorio a dibujar, puedes restringirte a un conjunto deseado de caracteres ASCII que podrían corresponder a una expresión regular, por ejemplo, a la clase de caracteres [a-zA-Z].

Claramente, esta no es una solución elegante ni eficiente, pero al menos es nativa y podría darte el efecto deseado con algo de código repetitivo.

1voto

Christophe Puntos 11

Aún no es una respuesta perfecta, sin embargo, Mark Heckmann ha sugerido usar un generador de cadenas aleatorias que resuelve parcialmente este problema:

GenRandomString <- function(n=1, lenght=12)
{
  randomString <- c(1:n)                  # inicializar vector
  for (i in 1:n)
  {
    randomString[i] <- paste(sample(c(0:9, letters, LETTERS),
                                    lenght, replace=TRUE),
                             collapse="")
  }
  return(randomString)
}
GenRandomString(5,8)

Salida: cinco cadenas aleatorias, de 8 caracteres de longitud

[1] "l42DjAtc" "jW6TdRZw" "5aAvMuDL" "iC3xOvst" "gqgSzE83"

Esto se puede utilizar para varios casos, por ejemplo, generar claves, nombres, simulaciones, etc.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X