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)
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)
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íoif (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" inicialmi_diccionario <-c("1"="60%", "2"="50%", "3"="30%")# Imprimir el diccionario inicialprint(mi_diccionario)
1 2 3
"60%" "50%" "30%"
# Utilizar popitem() para eliminar y devolver un par clave-valor aleatoriopar_aleatorio <-popitem(mi_diccionario)# Imprimir el par clave-valor aleatoriocat("Clave aleatoria:", names(par_aleatorio), "\n")
Clave aleatoria: clave_aleatoria.3
cat("Valor aleatorio:", par_aleatorio, "\n")
Valor aleatorio: 30%
# Imprimir el diccionario actualizadoprint(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" inicialmi_diccionario <-c("1"="60%", "2"="50%", "3"="30%")# Verificar si un valor está presente en el diccionariovalor_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 nombresmi_diccionario <-c("clave1"="valor1", "clave2"="valor2", "clave3"="valor3")# Iterar a través del "diccionario"for (clave innames(mi_diccionario)) { valor <- mi_diccionario[clave]cat("Clave:", clave, "- Valor:", valor, "\n")}
Conversion de clave, valor iterable en diccionario
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
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)