Tuplas

Una tupla también es una colección ordenada de elementos como una lista, pero las tuplas son inmutables, es decir, no podemos cambiar ni modificar el valor de los elementos de la tupla.

# Crear una "tupla" como una lista 
mi_tupla <- list(nombre = "Juan", edad = 30, ciudad = "Ejemplo") 
# Acceder a elementos individuales de la "tupla" por nombre 
nombre <- mi_tupla$nombre 
edad <- mi_tupla$edad 
ciudad <- mi_tupla$ciudad 
cat("Nombre:", nombre, "\n") 
Nombre: Juan 
cat("Edad:", edad, "\n") 
Edad: 30 
cat("Ciudad:", ciudad, "\n") 
Ciudad: Ejemplo 
# Intentar modificar un elemento de la "tupla" (esto generará un error) 
mi_tupla$nombre <- "Pedro" 
# Imprimir la "tupla" completa 
print(mi_tupla)
$nombre
[1] "Pedro"

$edad
[1] 30

$ciudad
[1] "Ejemplo"

Agregar elementos en tuplas

Como las tuplas son inmutables, no podemos agregar ni modificar la tupla existente. Pero de otra forma, podemos usar el operador de concatenación "+" y concatenar la nueva tupla con un solo elemento de la existente y crear una nueva referencia de tupla.

# Crear una lista inicial 
mi_lista <- list(nombre = "Juan", edad = 30) 
# Agregar un nuevo elemento a la lista 
nueva_lista <- c(mi_lista, ciudad = "Ejemplo") 
# Imprimir la nueva lista 
print(nueva_lista)
$nombre
[1] "Juan"

$edad
[1] 30

$ciudad
[1] "Ejemplo"

Concatenacion y repeticion

La forma de concatenar dos estructuras de datos en R, similar a cómo se hace en Python con el operador +, y cómo se repiten elementos en Python con el operador *. En R, podemos lograr esto utilizando las funciones c() para la concatenación y rep() para la repetición.

Concatenación de dos vectores o listas:

# Crear dos vectores 
vector1 <- c(1, 2, 3) 
vector2 <- c(4, 5, 6) 
# Concatenar los vectores 
resultado <- c(vector1, vector2) 
# Imprimir el resultado print(resultado) Repetición de elementos:

# Crear un vector 
vector <- c(1, 2, 3) 
# Repetir los elementos 3 veces 
repetido <- rep(vector, times = 3) 
# Imprimir el resultado 
print(repetido) 
[1] 1 2 3 1 2 3 1 2 3

Diccionarios

En R, podemos lograr un comportamiento similar al de un diccionario de Python utilizando listas o vectores con nombres para asociar claves y valores.

# Crear un "diccionario" en R utilizando un vector con nombres 
mi_diccionario <- c("1" = "60%", "2" = "50%", "3" = "30%") 
# Acceder a los valores por clave 
valor_1 <- mi_diccionario["1"] 
valor_2 <- mi_diccionario["2"] 
valor_3 <- mi_diccionario["3"] 
# Imprimir los valores 
cat("Valor para clave '1':", valor_1, "\n") 
Valor para clave '1': 60% 
cat("Valor para clave '2':", valor_2, "\n") 
Valor para clave '2': 50% 
cat("Valor para clave '3':", valor_3, "\n")
Valor para clave '3': 30% 

Agregar elementos en el diccionario

Usando la clave y pasando el valor, podemos agregar una nueva clave, par de valores, en el diccionario. Si ya hay una clave presente, actualizará el valor de esa clave.

# Crear un "diccionario" inicial 
mi_diccionario <- c("1" = "60%", "2" = "50%", "3" = "30%") 
# Imprimir el diccionario inicial 
print(mi_diccionario) 
    1     2     3 
"60%" "50%" "30%" 
# Agregar una nueva clave-valor 
mi_diccionario["4"] <- "40%" 
# Imprimir el diccionario actualizado 
print(mi_diccionario) 
    1     2     3     4 
"60%" "50%" "30%" "40%" 
# Actualizar un valor existente 
mi_diccionario["2"] <- "55%" 
# Imprimir el diccionario actualizado 
print(mi_diccionario)
    1     2     3     4 
"60%" "55%" "30%" "40%" 

Eliminar un elemento del diccionario

Podemos eliminar el valor de la clave especificada del diccionario mencionando la clave entre corchetes con la palabra clave del (del dict[key]).

Otra forma es utilizar el método popitem(), pero eliminará y devolverá un par de clave y valor aleatorio de un diccionario.

# Crear una función para emular popitem()
popitem <- function(diccionario) {
  # Verificar si el diccionario está vacío
  if (length(diccionario) == 0) {
    cat("El diccionario está vacío.\n")
    return(NULL)
  }
  
  # Obtener todas las claves del diccionario
  claves <- names(diccionario)
  
  # Elegir una clave aleatoria
  clave_aleatoria <- sample(claves, 1)
  
  # Obtener el valor correspondiente a la clave aleatoria
  valor_aleatorio <- diccionario[clave_aleatoria]
  
  # Eliminar la clave y su valor del diccionario
  diccionario <- diccionario[!names(diccionario) %in% clave_aleatoria]
  
  # Devolver la clave y el valor como un vector
  resultado <- c(clave_aleatoria = valor_aleatorio)
  
  return(resultado)
}

# Crear un "diccionario" inicial
mi_diccionario <- c("1" = "60%", "2" = "50%", "3" = "30%")

# Imprimir el diccionario inicial
print(mi_diccionario)
    1     2     3 
"60%" "50%" "30%" 
# Utilizar popitem() para eliminar y devolver un par clave-valor aleatorio
par_aleatorio <- popitem(mi_diccionario)

# Imprimir el par clave-valor aleatorio
cat("Clave aleatoria:", names(par_aleatorio), "\n")
Clave aleatoria: clave_aleatoria.3 
cat("Valor aleatorio:", par_aleatorio, "\n")
Valor aleatorio: 30% 
# Imprimir el diccionario actualizado
print(mi_diccionario)
    1     2     3 
"60%" "50%" "30%" 

Comprobar la pertenencia de un objeto

Al usar el operador in, podemos verificar si algún valor está presente en el diccionario o no. Si el valor existe en el diccionario, devolverá “True”.

# Crear un "diccionario" inicial
mi_diccionario <- c("1" = "60%", "2" = "50%", "3" = "30%")

# Verificar si un valor está presente en el diccionario
valor_a_buscar <- "50%"

if (any(names(mi_diccionario) == valor_a_buscar)) {
  cat("El valor", valor_a_buscar, "está presente en el diccionario.\n")
} else {
  cat("El valor", valor_a_buscar, "no está presente en el diccionario.\n")
}
El valor 50% no está presente en el diccionario.

Obtener la lista de todas las claves de un diccionario

En R, puedes obtener una lista de todas las claves (nombres) de un “diccionario” simulado (un vector con nombres) utilizando la función names().

# Crear un "diccionario" simulado como un vector con nombres 
mi_diccionario <- c("clave1" = "valor1", "clave2" = "valor2", "clave3" = "valor3") 
# Obtener una lista de todas las claves (nombres) del "diccionario" 
claves <- names(mi_diccionario) 
# Imprimir la lista de claves 
cat("Lista de claves:", claves, "\n")
Lista de claves: clave1 clave2 clave3 

Obtener la lista de todos los valores de un diccionario

Se puede obtener una lista de todos los valores de un “diccionario” simulado (un vector con nombres) utilizando la función unlist().

# Crear un "diccionario" simulado como un vector con nombres 
mi_diccionario <- c("clave1" = "valor1", "clave2" = "valor2", "clave3" = "valor3") 
# Obtener una lista de todos los valores del "diccionario" 
valores <- unlist(mi_diccionario) 
# Imprimir la lista de valores 
cat("Lista de valores:", valores, "\n")
Lista de valores: valor1 valor2 valor3 

Obtener la lista de tuplas de pares clave y valor

Para obtener una lista de todas las claves y sus valores como tuplas, puedes utilizar la función as.list() en combinación con names() y unlist().

# Crear un "diccionario" simulado como un vector con nombres 
mi_diccionario <- c("clave1" = "valor1", "clave2" = "valor2", "clave3" = "valor3") 
# Obtener la lista de todos los valores del "diccionario" 
valores <- unlist(mi_diccionario) 
# Imprimir la lista de valores 
cat("Lista de valores:", valores, "\n")
Lista de valores: valor1 valor2 valor3 

Iterando un diccionario

Podemos iterar a través de las claves y valores de un “diccionario” simulado (un vector con nombres) utilizando un bucle for en combinación con la función names() para obtener las claves y luego acceder a los valores por clave.

# Crear un "diccionario" simulado como un vector con nombres
mi_diccionario <- c("clave1" = "valor1", "clave2" = "valor2", "clave3" = "valor3")

# Iterar a través del "diccionario"
for (clave in names(mi_diccionario)) {
  valor <- mi_diccionario[clave]
  cat("Clave:", clave, "- Valor:", valor, "\n")
}
Clave: clave1 - Valor: valor1 
Clave: clave2 - Valor: valor2 
Clave: clave3 - Valor: valor3 

Conversion de clave, valor iterable en diccionario

  1. Convertir una lista de claves en un “diccionario”:

    # Lista de claves 
    claves <- c("clave1", "clave2", "clave3") 
    # Crear un "diccionario" a partir de la lista de claves 
    diccionario_de_claves <- setNames(rep(NA, length(claves)), claves) 
    # Imprimir el "diccionario" resultante 
    print(diccionario_de_claves)
    clave1 clave2 clave3 
        NA     NA     NA 
  2. Convertir una lista de valores en un “diccionario”:

    # Lista de valores 
    valores <- c("valor1", "valor2", "valor3") 
    # Crear un "diccionario" a partir de la lista de valores 
    diccionario_de_valores <- setNames(valores, seq_along(valores)) 
    # Imprimir el "diccionario" resultante 
    print(diccionario_de_valores)
           1        2        3 
    "valor1" "valor2" "valor3"