Los vectores son una secuencia de elementos que pertenecen al mismo tipo de datos. Sin embargo, una lista en R se compone de elementos, vectores, variables o listas que pueden pertenecer a diferentes tipos de datos. En este artículo, estudiaremos cómo crear una lista que consta de vectores como elementos y cómo acceder, agregar y eliminar estos vectores en las listas. list()
La función en R crea una lista de los argumentos especificados. Los vectores especificados como argumentos en esta función pueden tener diferentes longitudes.
Sintaxis:
list(arg1, arg2, ..)
Ejemplo 1:
Python3
# R program to create a list of Vectors # Creating Vectors vec1 <- c(1, 2, 3) vec2 <- c(TRUE, FALSE) # Creating a list of Vectors listt = list(vec1, vec2) # Printing List print (listt)
Producción:
[[1]] [1] 1 2 3 [[2]] [1] TRUE FALSE
Aquí, en el código anterior, vec1 es un vector entero de longitud 3. vec2 es un vector booleano de longitud 2.
[[indx]] especifica el vector completo en el valor de índice correspondiente de la lista completa.
Ejemplo 2:
Python3
# R program to create a list of Vectors # Creating Vectors vec1 <- c(1, 2, 3) vec2 <- c(TRUE, FALSE) # Creating list of Vectors listt = list(vec1, vec2) # Printing List print (listt[[2]]) print (listt[[2]][2])
Producción:
[1] TRUE FALSE [1] FALSE
Se puede acceder al vector completo en una posición usando el valor de posición correspondiente entre [[ ]] o []. Si además deseamos acceder a los elementos de un vector en particular, se puede especificar utilizando la posición requerida encerrada entre []. La primera declaración de impresión imprime el segundo vector completo contenido en la lista, es decir, vec2. Y, la segunda declaración de impresión imprime el segundo elemento del segundo vector, que es FALSO.
Agregar elementos a una lista
Se pueden agregar vectores adicionales especificando la posición en la lista donde deseamos agregar el nuevo vector. Los nuevos elementos se concatenan al final de la lista. También se pueden agregar varios elementos a una lista con el uso de un bucle ‘for’ o ‘while’. Estos elementos pueden ser vectores, arrays, numéricos o variables. Los cambios se realizan en la lista original. Los elementos se agregan en complejidad de tiempo O(n), donde n es la longitud de la lista.
Ejemplo 1:
Python3
# R program to create a list of Vectors # Creating Vectors vec1 <- c(1, 2, 3) vec2 <- c(TRUE, FALSE) # Creating list of Vectors lst = list(vec1, vec2) # Creating a new Vector vec3 <- c(1 + 3i) # Adding Vector to list lst[[3]]<- vec3 # Printing List print (lst)
Producción:
[[1]] [1] 1 2 3 [[2]] [1] TRUE FALSE [[3]] [1] 1+3i
En el código anterior, vec3 es un vector que consta de un número complejo. Se añade en la tercera posición de la lista.
Ejemplo 2:
Python3
# R program to create a list of Vectors # Creating Vectors vec1 <- c(1, 2, 3) vec2 <- c(TRUE, FALSE) # Creating list of Vectors lst = list(vec1, vec2) # determine the length of list len <- length(lst) # Creating new Vector vec3 <- c(0.5, 2 + 2i) # Using for loop to add elements for( i in 1:2) { # Adding vec to list lst[[len + i]]<- vec3 } print (lst)
Producción:
[[1]] [1] 1 2 3 [[2]] [1] TRUE FALSE [[3]] [1] 0.5+0i 2.0+2i [[4]] [1] 0.5+0i 2.0+2i
Aquí, en el código anterior, se crea un bucle for que se ejecuta dos veces y agrega el vector 2+2i a la lista al final.
Eliminar elementos de una lista
El vector a eliminar se puede asignar a un valor NULL utilizando su posición correspondiente en la lista. Los cambios se realizan en la lista original. Los vectores se pueden eliminar en cualquier posición de la lista, por lo tanto, el tamaño se reduce en uno y los elementos se empujan hacia atrás en consecuencia. La lista completa se puede eliminar formando sucesivamente un bucle y eliminando elementos uno por uno.
Ejemplo:
Python3
# R program to create a list of Vectors # Creating Vectors vec1 <- c(1, 2, 3) vec2 <- c(TRUE, FALSE) # Creating list of Vectors lst = list(vec1, vec2) # Creating new Vector vec3 <- c(1 + 3i) # Adding Vector to list lst[[3]]<- vec3 print ("Original List") print (lst) # Removing Vector from list lst[[2]]<-NULL print ("Modified List") print (lst)
Producción:
[1] "Original List" [[1]] [1] 1 2 3 [[2]] [1] TRUE FALSE [[3]] [1] 1+3i [1] "Modified List" [[1]] [1] 1 2 3 [[2]] [1] 1+3i
Aquí, el segundo vector se elimina de la lista original.
Modificar elementos en una lista
Los elementos se pueden modificar de manera similar, asignando un nuevo vector a la posición deseada. Los elementos en cualquier índice se pueden cambiar a otros vectores, funciones o incluso arrays. La modificación de un elemento requiere una complejidad de tiempo O(1).
Ejemplo:
Python3
# R program to create a list of Vectors # Creating Vectors vec1 <- c(1, 2, 3) vec2 <- c(TRUE, FALSE) # Creating list of Vectors lst = list(vec1, vec2) print ("original list") print (lst) # Modifying List element lst[[2]]<-c("TEACH", "CODING") print ("Modified List") print (lst)
Producción:
[1] "original list" [[1]] [1] 1 2 3 [[2]] [1] TRUE FALSE [1] "Modified List" [[1]] [1] 1 2 3 [[2]] [1] "TEACH" "CODING"
Fusionando dos listas
Las listas que comprenden vectores se pueden fusionar para formar una lista más grande. Las listas se fusionan en el orden en que aparecen en la función como argumentos. El tamaño total de la lista fusionada es la suma de los tamaños de las listas individuales. Hay dos formas de fusionar listas en una sola: la función
c() o la función append() , las cuales toman argumentos como listas para combinar. La complejidad de tiempo requerida para fusionar dos listas es O(m) donde m es el tamaño de la lista que aparece primero en la función.
Ejemplo:
Python3
# R program to merge two lists of Vectors # Creating 1st list list_data1 <- list(c(1:3), c(TRUE, FALSE)) # Creating 2nd list list_data2 <- list(c(0.1, 3.4)) print("First List") print (list_data1) print ("Second List") print (list_data2) print("Merged List") # Merging Lists merged_list <- c(list_data1, list_data2) print (merged_list)
Producción:
[1] "First List" [[1]] [1] 1 2 3 [[2]] [1] TRUE FALSE [1] "Second List" [[1]] [1] 0.1 3.4 [1] "Merged List" [[1]] [1] 1 2 3 [[2]] [1] TRUE FALSE [[3]] [1] 0.1 3.4
Ejemplo 2:
Python3
# R program to Merge two lists # Creating 1st list list_data1 <- list(c(1:3), c(TRUE, FALSE)) # Creating 2nd List list_data2 <- list(c("Hi")) print("First List") print (list_data1) print ("Second List") print (list_data2) print("Merged List") # Merging lists using append function merged_list <- append(list_data1, list_data2) print (merged_list)
Producción:
[1] "First List" [[1]] [1] 1 2 3 [[2]] [1] TRUE FALSE [1] "Second List" [[1]] [1] "Hi" [1] "Merged List" [[1]] [1] 1 2 3 [[2]] [1] TRUE FALSE [[3]] [1] "Hi"
List1 contiene un vector entero y otro vector booleano. List2 contiene un solo vector compuesto por números reales. Merged List es de tamaño tres como suma de estos tres vectores.