Números aleatorios

Una de las funciones posibles en R es la generación de números aleatorios, los resultados pueden concatenarse y almacenarse en forma de vector.

Números aleatorios enteros

El comando sample nos permite seleccionar/generar números aleatorios enteros.

aleatorios <- sample(25:40, 25, replace = T)

El primer argumento es un vector de números válidos a partir de los cuáles se generarán los valores aleatorios, en este caso van de 25 a 40. El segundo argumento indica el número de valores aleatorios a generar, que para este ejemplo serán 25 números aleatorios. El tercer argumento replace = T indica que cada valor aleatorio puede tener duplicados. Finalmente el resultado es guardado en el objeto de nombre aleatorios.

Revisamos el resultado

aleatorios
##  [1] 38 35 27 35 27 40 32 36 39 34 33 34 36 37 29 33 30 37 32 32 26 37 37 39 36

Generación aleatoria de valores de tipo carácter

También es posible seleccionar y/o generar valores aleatorios de tipo carácter, para ello necesitamos en el primer argumento un vector con datos válidos a seleccionar, como segundo argumento el total de valores a generar y definir si se permiten duplicados.

aleat_txt <- 
  sample(c("pera", "manzana", "guayaba", "papaya", "mango"), 25, replace = TRUE)
  aleat_txt
##  [1] "manzana" "manzana" "manzana" "mango"   "mango"   "papaya"  "manzana"
##  [8] "pera"    "mango"   "mango"   "manzana" "manzana" "papaya"  "pera"   
## [15] "mango"   "guayaba" "manzana" "pera"    "pera"    "papaya"  "papaya" 
## [22] "mango"   "papaya"  "pera"    "guayaba"

Números aleatorios con decimales

El comando runif nos permite generar números aleatorios a partir de la distribución uniforme. Aquí un ejemplo para generar 25 números aleatorios entre 12.7 y 24.6

aleat_unif <- runif(25, 12.7, 24.6)
aleat_unif
##  [1] 17.00063 22.67238 13.62301 18.07719 18.29160 18.50013 15.79959 19.68406
##  [9] 24.59555 20.07738 16.38827 13.20129 14.44109 16.39173 13.56270 14.76234
## [17] 21.79659 19.84469 16.29160 16.21104 19.08911 16.12468 21.39027 14.01321
## [25] 15.17195

Para redondear los resultados debemos agregar el comando round y especificar el redondeo a 1 dígito

aleat_unif <- round(runif(25, 12.7, 24.6), 1)
aleat_unif
##  [1] 24.5 21.5 16.3 13.7 13.8 14.5 24.1 22.4 15.5 18.5 19.6 21.8 14.5 13.4 23.7
## [16] 22.1 20.4 23.6 15.8 14.6 18.9 13.1 22.9 22.6 17.0

El comando rnorm nos permite generar números aleatorios a partir de la distribución normal. Aquí un ejemplo para generar 25 números aleatorios con media 24.7 y desviación estándar de 4.3

aleat_rnorm <- rnorm(25, 24.7, 4.3)
aleat_rnorm
##  [1] 18.78362 27.18988 19.76586 21.21905 21.60027 32.64012 27.73634 21.74829
##  [9] 29.33435 31.00413 19.58693 20.12818 21.71159 26.18978 19.96131 28.12992
## [17] 22.85746 22.09058 30.53628 20.68278 25.19788 17.47848 31.23702 23.46720
## [25] 23.33840

Para redondear podemos utilizar nuevamente el comando round

aleat_rnorm <- round(rnorm(25, 24.7, 4.3), 1)
aleat_rnorm
##  [1] 25.8 28.1 24.2 21.0 24.8 18.0 14.0 28.1 22.1 24.2 36.7 24.4 30.7 18.8 21.7
## [16] 23.9 26.1 26.5 26.7 19.9 25.7 23.8 24.5 28.2 30.8
José Luis Texcalac Sangrador
José Luis Texcalac Sangrador
Investigador en Ciencias Médicas

Mi área de interés se centra en el desarrollo de modelos de análisis espacial para la estimación de exposición humana a contaminantes ambientales usando R.