5  Diccionarios

En R, se utilizan principalmente listas con nombres o matrices asociativas para representar colecciones de datos con pares clave-valor, lo que se asemeja a la funcionalidad de un diccionario.

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.

5.1.1 Ejemplo

mi_diccionario2 <- list(nombre = "Brimstone", edad = 40, ciudad = "Tokio")
mi_diccionario2$profesion <- "Albañil"

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.

5.2.1 Ejemplo

mi_diccionario3 <- list(nombre = "Breach", edad = 37, ciudad = "Londres", profesion = "Ingeniero")
mi_diccionario3$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.

5.3.1 Ejemplo

mi_diccionario4 <- list(nombre = "Cypher", edad = 25, ciudad = "Osaka")
if (exists("edad", where = mi_diccionario4)) {
  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 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.

5.4.1 Ejemplo

mi_diccionario5 <- list(nombre = "Omen", edad = 34, ciudad = "San Francisco")
claves <- names(mi_diccionario5)

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.

5.5.1 Ejemplo

mi_diccionario6 <- list(nombre = "Sova", edad = 26, ciudad = "Moscú")
valores <- unlist(mi_diccionario6)

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().

5.6.1 Ejemplo

mi_diccionario7 <- list(nombre = "Gekko", edad = 30, ciudad = "Florencia")
tuplas <- as.list(mi_diccionario7)

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.

  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.

5.7.1 Ejemplos

## Usando un bucle for
mi_diccionario8 <- list(nombre = "Neon", edad = 21, ciudad = "Budapest")

for (clave in names(mi_diccionario8)) {
  valor <- mi_diccionario8[[clave]]
  cat("Clave:", clave, "Valor:", valor, "\n")
}
Clave: nombre Valor: Neon 
Clave: edad Valor: 21 
Clave: ciudad Valor: Budapest 
## Usando la función lapply()
mi_diccionario9 <- list(nombre = "Sage", edad = 32, ciudad = "Viena")

resultados <- lapply(names(mi_diccionario9), function(clave) {
  valor <- mi_diccionario9[[clave]]
  return(list(Clave = clave, Valor = valor))
})

for (resultado in resultados) {
  cat("Clave:", resultado$Clave, "Valor:", resultado$Valor, "\n")
}
Clave: nombre Valor: Sage 
Clave: edad Valor: 32 
Clave: ciudad Valor: Viena 

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.

    5.8.1 Ejemplo

    pares <- list(c(clave = "nombre", valor = "Astra"),
                  c(clave = "edad", valor = 19),
                  c(clave = "ciudad", valor = "Chicago"))
    
    mi_diccionario10 <- as.list(setNames(sapply(pares, `[[`, 2), sapply(pares, `[[`, 1)))
    
    nombre <- mi_diccionario10$nombre
    edad <- mi_diccionario10$edad
    ciudad <- mi_diccionario10$ciudad