Crear secuencia de valores repetidos en R

Una secuencia repetida de números es una lista incremental de números ordenados de tal manera que la diferencia en los números sucesivos es 1, y cada uno de estos números se repite el número especificado de veces. R nos proporciona una variedad de métodos para generar secuencias repetidas usando vectores o números enteros. En este artículo, vamos a ver cómo crear una secuencia de valores repetidos en la programación de R.

Método 1: Usar el método rep()

El método rep() de base R se usa para generar una secuencia replicada a partir de un vector específico, donde cada elemento del vector puede repetirse en cualquier número de veces especificadas. Este método puede tomar vectores de entrada de tipo carácter, flotantes o enteros.  

Sintaxis: rep(seq, each)

Argumentos: 

  • seq: el vector para generar una secuencia de
  • each – El número de veces que se repite cada elemento de la secuencia

Ejemplo 1: Creación de una secuencia de caracteres de valor repetido.

R

# declaring vector
vec <- LETTERS[1 : 4]
 
# replicate each letter in vec 3 times
print ("Replicated Sequence")
rep(vec, each = 3)

Producción:

[1] "Replicated Sequence"
[1] "A" "A" "A" "B" "B" "B" "C" "C" "C" "D" "D" "D"

Ejemplo 2: Crear una secuencia entera de valor repetido.

R

# declaring vector
vec <- c(60 : 62)
 
# replicate each integer in vec 3 times
print ("Replicated Sequence")
rep(vec, each = 2)

Producción

[1] "Replicated Sequence"
[1] 60 60 61 61 62 62

Método 2: Usar el método gl() .

El método gl() en base R se usa para generar factores en forma de especificación de patrón. La salida depende de la cantidad de niveles, y cada uno de ellos se replica k veces hasta que se alcanza la longitud. En caso de que no se especifique la longitud, se considera que la longitud es un número de niveles * número de repeticiones de cada nivel. El inconveniente de este enfoque es que siempre genera una secuencia que oscila entre 1 y n. Pero, en caso de que necesitemos anular este etiquetado predeterminado, se puede asignar un vector de etiqueta personalizado a la salida. 

Sintaxis: gl(n, k, longitud, etiquetas)

Argumentos: 

  • n – el número total de niveles.
  • k – número de repeticiones de cada nivel.
  • longitud (Por defecto: n * k) – longitud de la salida
  • etiquetas: etiquetas utilizadas para los niveles de los factores.

Código:

R

# generate a sequence of 1:6 each
# repeated 4 times
gl(6 , 4 )

Producción:

 [1] 1 1 1 1 2 2 2 2 3 3 3 3 4 4 4 4 5 5 5 5 6 6 6 6
Levels: 1 2 3 4 5 6

Si la longitud es mayor que n × k, entonces la misma secuencia se agrega nuevamente al final, hasta que se alcanza la longitud total del vector. 

R

# generate a sequence of 1:6 each
# repeated 3 times until length=20
gl(6 , 3 , length = 20)

Producción:

[1] 1 1 1 2 2 2 3 3 3 4 4 4 5 5 5 6 6 6 1 1
Levels: 1 2 3 4 5 6

Explicación : dado que 6 × 3 = 18, por lo tanto, se agrega la misma secuencia que comienza desde el principio hasta que se logra la longitud = 20. Por lo tanto, 1 1 se suma al final. 

Además, se pueden asignar etiquetas personalizadas a la secuencia, como resultado de lo cual los números de secuencia reales se pueden reemplazar por las letras correspondientes del vector de etiquetas. Para garantizar un mapeo adecuado, la longitud del vector de las etiquetas debe ser igual al número de niveles de los factores. 

R

# generate a sequence of 1:5
# each repeated 2 times assigned
# labels from 100
seq1 <- gl(5, 2, labels = c(100 : 104))
print("Sequence 1")
print (seq1)
 
# generate a sequence of 1:5
# each repeated 2 times assigned
# labels as letters from a
seq2 <- gl(5, 2, labels = letters[ 1 : 5 ])
print("Sequence 2")
print (seq2)

Producción:

[1] "Sequence 1"
[1] 100 100 101 101 102 102 103 103 104 104
Levels: 100 101 102 103 104
[1] "Sequence 2"
[1] a a b b c c d d e e
Levels: a b c d e

Explicación: en la secuencia 1, cada instancia de 1 en la secuencia original se reemplaza por 101, 2 se reemplaza por 102 y así sucesivamente. De manera similar, en la secuencia 2, cada instancia de 1 se reemplaza por ‘a’, 2 por ‘b’, y así sucesivamente. 

Publicación traducida automáticamente

Artículo escrito por codersgram9 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 *