5  Diccionarios

En R, no existe una estructura de datos nativa llamada “diccionario” como en algunos otros lenguajes de programación, pero puedes emular diccionarios utilizando listas con nombres o matrices asociativas. Las listas con nombres son una forma común de representar diccionarios en R.

5.1 Agregar elemento(s) en el diccionario

En R, puedes agregar elementos a un diccionario emulado, que se representa mediante una lista con nombres, simplemente asignando un nuevo valor a una clave que aún no existe en el diccionario.

mi_diccionario <- list(nombre = "Juan", edad = 30, ciudad = "Nueva York")
mi_diccionario$profesion <- "Ingeniero"

5.2 Eliminar un elemento del diccionario de R

Para eliminar un elemento de un diccionario emulado en R, que está representado como una lista con nombres, puedes usar la función NULL para asignar un valor nulo al elemento que deseas eliminar.

mi_diccionario <- list(nombre = "Juan", edad = 30, ciudad = "Nueva York", profesion = "Ingeniero")
mi_diccionario$profesion <- NULL

5.3 Comprobar la pertenencia de un elemento

Para comprobar si una clave específica pertenece a un diccionario emulado en R, que está representado como una lista con nombres, puedes utilizar la función exists(). La función exists() verifica si una variable o un elemento con el nombre especificado existe en el entorno actual. En este caso, usaremos exists() para verificar si una clave específica existe en el diccionario.

mi_diccionario <- list(nombre = "Juan", edad = 30, ciudad = "Nueva York")
if (exists("edad", where = mi_diccionario)) {
  cat("La clave 'edad' existe en el diccionario.")
} else {
  cat("La clave 'edad' no existe en el diccionario.")
}
La clave 'edad' existe en el diccionario.

5.4 Obtener la lista de todas las claves de un diccionario

Para obtener la lista de todas las claves (nombres) de un diccionario emulado en R, que está representado como una lista con nombres, puedes utilizar la función names(). La función names() devuelve un vector con los nombres de los elementos de la lista.

mi_diccionario <- list(nombre = "Juan", edad = 30, ciudad = "Nueva York")
claves <- names(mi_diccionario)

5.5 Obtener la lista de todos los valores de un diccionario

Para obtener la lista de todos los valores de un diccionario emulado en R, que está representado como una lista con nombres, puedes utilizar la función unlist(). La función unlist() permite extraer todos los valores de la lista y colocarlos en un solo vector.

# Crear un diccionario utilizando una lista con nombres
mi_diccionario <- list(nombre = "Juan", edad = 30, ciudad = "Nueva York")

# Obtener la lista de todos los valores del diccionario
valores <- unlist(mi_diccionario)

# Imprimir la lista de valores
cat("Valores del diccionario:", valores, "\n")
Valores del diccionario: Juan 30 Nueva York 

5.6 Obtener la lista de tuplas de pares clave y valor

Para obtener una lista de tuplas de pares clave-valor de un diccionario emulado en R (representado como una lista con nombres), puedes utilizar la función as.list() junto con la función names().

mi_diccionario <- list(nombre = "Juan", edad = 30, ciudad = "Nueva York")
tuplas <- as.list(mi_diccionario)

5.7 Iterando un diccionario

Para iterar a través de un diccionario emulado en R, que se representa como una lista con nombres, puedes utilizar un bucle for o funciones de la familia apply.

  1. Usando un bucle for:

    Puedes utilizar un bucle for para iterar a través de las claves del diccionario y acceder a los valores correspondientes. Aquí tienes un ejemplo:

    mi_diccionario <- list(nombre = "Juan", edad = 30, ciudad = "Nueva York")
    
    for (clave in names(mi_diccionario)) {
      valor <- mi_diccionario[[clave]]
      cat("Clave:", clave, "Valor:", valor, "\n")
    }
    Clave: nombre Valor: Juan 
    Clave: edad Valor: 30 
    Clave: ciudad Valor: Nueva York 
  2. Usando la función lapply():

    Puedes utilizar la función lapply() para aplicar una función a cada elemento del diccionario, lo que te permite iterar a través de las claves y valores de manera más eficiente. Aquí tienes un ejemplo:

    mi_diccionario <- list(nombre = "Juan", edad = 30, ciudad = "Nueva York")
    
    resultados <- lapply(names(mi_diccionario), function(clave) {
      valor <- mi_diccionario[[clave]]
      return(list(Clave = clave, Valor = valor))
    })
    
    for (resultado in resultados) {
      cat("Clave:", resultado$Clave, "Valor:", resultado$Valor, "\n")
    }
    Clave: nombre Valor: Juan 
    Clave: edad Valor: 30 
    Clave: ciudad Valor: Nueva York 

5.8 Conversión de clave, valor iterable en diccionario

Para convertir un iterable de pares clave-valor en un diccionario en R, puedes utilizar la función as.list().

  • Usando as.list():

    Si tienes una lista de pares clave-valor representada como una lista de listas o una matriz, puedes utilizar as.list() para convertirla en un diccionario. Cada par clave-valor se convierte en un elemento del diccionario. Aquí tienes un ejemplo:

    pares <- list(c(clave = "nombre", valor = "Juan"),
                  c(clave = "edad", valor = 30),
                  c(clave = "ciudad", valor = "Nueva York"))
    
    mi_diccionario <- as.list(setNames(sapply(pares, `[[`, 2), sapply(pares, `[[`, 1)))
    
    nombre <- mi_diccionario$nombre
    edad <- mi_diccionario$edad
    ciudad <- mi_diccionario$ciudad