R - Elenchi
Le liste sono gli oggetti R che contengono elementi di diverso tipo come - numeri, stringhe, vettori e un altro elenco al suo interno. Un elenco può anche contenere una matrice o una funzione come suoi elementi. L'elenco viene creato utilizzandolist() funzione.
Creazione di un elenco
Di seguito è riportato un esempio per creare un elenco contenente stringhe, numeri, vettori e valori logici.
# Create a list containing strings, numbers, vectors and a logical
# values.
list_data <- list("Red", "Green", c(21,32,11), TRUE, 51.23, 119.1)
print(list_data)
Quando eseguiamo il codice sopra, produce il seguente risultato:
[[1]]
[1] "Red"
[[2]]
[1] "Green"
[[3]]
[1] 21 32 11
[[4]]
[1] TRUE
[[5]]
[1] 51.23
[[6]]
[1] 119.1
Denominazione degli elementi dell'elenco
È possibile assegnare nomi agli elementi dell'elenco ed è possibile accedervi utilizzando questi nomi.
# Create a list containing a vector, a matrix and a list.
list_data <- list(c("Jan","Feb","Mar"), matrix(c(3,9,5,1,-2,8), nrow = 2),
list("green",12.3))
# Give names to the elements in the list.
names(list_data) <- c("1st Quarter", "A_Matrix", "A Inner list")
# Show the list.
print(list_data)
Quando eseguiamo il codice sopra, produce il seguente risultato:
$`1st_Quarter`
[1] "Jan" "Feb" "Mar"
$A_Matrix
[,1] [,2] [,3]
[1,] 3 5 -2
[2,] 9 1 8
$A_Inner_list
$A_Inner_list[[1]]
[1] "green"
$A_Inner_list[[2]]
[1] 12.3
Accesso agli elementi dell'elenco
È possibile accedere agli elementi della lista tramite l'indice dell'elemento nella lista. In caso di elenchi denominati è possibile accedervi anche utilizzando i nomi.
Continuiamo a utilizzare l'elenco nell'esempio precedente:
# Create a list containing a vector, a matrix and a list.
list_data <- list(c("Jan","Feb","Mar"), matrix(c(3,9,5,1,-2,8), nrow = 2),
list("green",12.3))
# Give names to the elements in the list.
names(list_data) <- c("1st Quarter", "A_Matrix", "A Inner list")
# Access the first element of the list.
print(list_data[1])
# Access the thrid element. As it is also a list, all its elements will be printed.
print(list_data[3])
# Access the list element using the name of the element.
print(list_data$A_Matrix)
Quando eseguiamo il codice sopra, produce il seguente risultato:
$`1st_Quarter`
[1] "Jan" "Feb" "Mar"
$A_Inner_list
$A_Inner_list[[1]]
[1] "green"
$A_Inner_list[[2]]
[1] 12.3
[,1] [,2] [,3]
[1,] 3 5 -2
[2,] 9 1 8
Manipolazione degli elementi dell'elenco
Possiamo aggiungere, eliminare e aggiornare gli elementi dell'elenco come mostrato di seguito. Possiamo aggiungere ed eliminare elementi solo alla fine di un elenco. Ma possiamo aggiornare qualsiasi elemento.
# Create a list containing a vector, a matrix and a list.
list_data <- list(c("Jan","Feb","Mar"), matrix(c(3,9,5,1,-2,8), nrow = 2),
list("green",12.3))
# Give names to the elements in the list.
names(list_data) <- c("1st Quarter", "A_Matrix", "A Inner list")
# Add element at the end of the list.
list_data[4] <- "New element"
print(list_data[4])
# Remove the last element.
list_data[4] <- NULL
# Print the 4th Element.
print(list_data[4])
# Update the 3rd Element.
list_data[3] <- "updated element"
print(list_data[3])
Quando eseguiamo il codice sopra, produce il seguente risultato:
[[1]]
[1] "New element"
$<NA>
NULL
$`A Inner list`
[1] "updated element"
Unione di elenchi
Puoi unire molti elenchi in un elenco inserendo tutti gli elenchi all'interno di una funzione list ().
# Create two lists.
list1 <- list(1,2,3)
list2 <- list("Sun","Mon","Tue")
# Merge the two lists.
merged.list <- c(list1,list2)
# Print the merged list.
print(merged.list)
Quando eseguiamo il codice sopra, produce il seguente risultato:
[[1]]
[1] 1
[[2]]
[1] 2
[[3]]
[1] 3
[[4]]
[1] "Sun"
[[5]]
[1] "Mon"
[[6]]
[1] "Tue"
Conversione da elenco a vettore
Un elenco può essere convertito in un vettore in modo che gli elementi del vettore possano essere utilizzati per ulteriori manipolazioni. Tutte le operazioni aritmetiche sui vettori possono essere applicate dopo che l'elenco è stato convertito in vettori. Per fare questa conversione, usiamo ilunlist()funzione. Prende l'elenco come input e produce un vettore.
# Create lists.
list1 <- list(1:5)
print(list1)
list2 <-list(10:14)
print(list2)
# Convert the lists to vectors.
v1 <- unlist(list1)
v2 <- unlist(list2)
print(v1)
print(v2)
# Now add the vectors
result <- v1+v2
print(result)
Quando eseguiamo il codice sopra, produce il seguente risultato:
[[1]]
[1] 1 2 3 4 5
[[1]]
[1] 10 11 12 13 14
[1] 1 2 3 4 5
[1] 10 11 12 13 14
[1] 11 13 15 17 19