The goal of this tutorial is to create a list of lists. Being able to append a list inside of another list.
# We can create a list easily using the list function
my_list <- list(names = c("Name", "City", "Zip Code", "Street"), numbers = c(1:10))
str(my_list)
## List of 2
## $ names : chr [1:4] "Name" "City" "Zip Code" "Street"
## $ numbers: int [1:10] 1 2 3 4 5 6 7 8 9 10
# First we create an empty list
my_list_of_lists <- list()
# Now we can add using the append function how many lists we want
for(i in 1:5){
my_list <- list(names = c("Name", "City", "Zip Code", "Street"), numbers = c(1:10 + 10*(i-1)))
my_list_of_lists <- append(my_list_of_lists, list(my_list))
names(my_list_of_lists)[i] <- paste0("my_list",i)
}
# Let's check what we got
str(my_list_of_lists)
## List of 5
## $ my_list1:List of 2
## ..$ names : chr [1:4] "Name" "City" "Zip Code" "Street"
## ..$ numbers: num [1:10] 1 2 3 4 5 6 7 8 9 10
## $ my_list2:List of 2
## ..$ names : chr [1:4] "Name" "City" "Zip Code" "Street"
## ..$ numbers: num [1:10] 11 12 13 14 15 16 17 18 19 20
## $ my_list3:List of 2
## ..$ names : chr [1:4] "Name" "City" "Zip Code" "Street"
## ..$ numbers: num [1:10] 21 22 23 24 25 26 27 28 29 30
## $ my_list4:List of 2
## ..$ names : chr [1:4] "Name" "City" "Zip Code" "Street"
## ..$ numbers: num [1:10] 31 32 33 34 35 36 37 38 39 40
## $ my_list5:List of 2
## ..$ names : chr [1:4] "Name" "City" "Zip Code" "Street"
## ..$ numbers: num [1:10] 41 42 43 44 45 46 47 48 49 50
# If we want to access the elements of a list we must use double squared bracket[[]]
my_list_of_lists[[1]]
## $names
## [1] "Name" "City" "Zip Code" "Street"
##
## $numbers
## [1] 1 2 3 4 5 6 7 8 9 10
# We see that the first element of the list is a list
# Let's go deeper
# Now we can access the first element of the second list
my_list_of_lists[[1]][1]
## $names
## [1] "Name" "City" "Zip Code" "Street"
# However this is still a list
str(my_list_of_lists[[1]][1])
## List of 1
## $ names: chr [1:4] "Name" "City" "Zip Code" "Street"
# We can access the vector inside of the list using the double bracket
str(my_list_of_lists[[1]][[1]])
## chr [1:4] "Name" "City" "Zip Code" "Street"
# Now we can go deeper and access one element of the character vector inside of the list
# This should return the character "Zip Code"
my_list_of_lists[[1]][[1]][3]
## [1] "Zip Code"
# Using the same logic this query should return the number 24
my_list_of_lists[[3]][[2]][4]
## [1] 24
In this tutorial we have learnt how to access elements inside of a list. We have learnt how to create a list of lists and access each diferent element of the list.