R – Lists

27 Oct, 2021
A list in R is a generic object consisting of an ordered collection of objects. Lists are one-dimensional, heterogeneous data structures. The list can be a list of vectors, a list of matrices, a list of characters and a list of functions, and so on. 
A list is a vector but with heterogeneous data elements. A list in R is created with the use of list() function. R allows accessing elements of a list with the use of the index value. In R, the indexing of a list starts with 1 instead of 0 like other programming languages.  
To create a List in R you need to use the function called “list()”. In other words, a list is a generic vector containing other objects. To illustrate how a list looks, we take an example here. We want to build a list of employees with the details. So for this, we want attributes such as ID, employee name, and the number of employees. 
Example:  
R
# R program to create a List  # The first attributes is a numeric vector# containing the employee IDs which is created# using the command hereempId = c(1, 2, 3, 4)  # The second attribute is the employee name# which is created using this line of code here# which is the character vectorempName = c("Debi", "Sandeep", "Subham", "Shiba")  # The third attribute is the number of employees# which is a single numeric variable.numberOfEmp = 4  # We can combine all these three different# data types into a list# containing the details of employees# which can be done using a list commandempList = list(empId, empName, numberOfEmp)  print(empList)
Output: 
[[1]]
[1] 1 2 3 4

[[2]]
[1] "Debi"    "Sandeep" "Subham"  "Shiba"  

[[3]]
[1] 4
We can access components of a list in two ways. 
Access components by names: All the components of a list can be named and we can use those names to access the components of the list using the dollar command.
Example: 
R
# R program to access# components of a list # Creating a list by naming all its componentsempId = c(1, 2, 3, 4)empName = c("Debi", "Sandeep", "Subham", "Shiba")numberOfEmp = 4empList = list(  "ID" = empId,  "Names" = empName,  "Total Staff" = numberOfEmp  )print(empList) # Accessing components by namescat("Accessing name components using $ command\n")print(empList$Names)
Output:
$ID
[1] 1 2 3 4

$Names
[1] "Debi"    "Sandeep" "Subham"  "Shiba"  

$`Total Staff`
[1] 4

Accessing name components using $ command
[1] "Debi"    "Sandeep" "Subham"  "Shiba"  
Access components by indices: We can also access the components of the list using indices. To access the top-level components of a list we have to use a double slicing operator “[[ ]]” which is two square brackets and if we want to access the lower or inner level components of a list we have to use another square bracket “[ ]” along with the double slicing operator “[[ ]]“.
Example: 
R
# R program to access# components of a list # Creating a list by naming all its componentsempId = c(1, 2, 3, 4)empName = c("Debi", "Sandeep", "Subham", "Shiba")numberOfEmp = 4empList = list(  "ID" = empId,  "Names" = empName,  "Total Staff" = numberOfEmp  )print(empList) # Accessing a top level components by indicescat("Accessing name components using indices\n")print(empList[[2]]) # Accessing a inner level components by indicescat("Accessing Sandeep from name using indices\n")print(empList[[2]][2]) # Accessing another inner level components by indicescat("Accessing 4 from ID using indices\n")print(empList[[1]][4])
Output:
$ID
[1] 1 2 3 4

$Names
[1] "Debi"    "Sandeep" "Subham"  "Shiba"  

$`Total Staff`
[1] 4

Accessing name components using indices
[1] "Debi"    "Sandeep" "Subham"  "Shiba"  
Accessing Sandeep from name using indices
[1] "Sandeep"
Accessing 4 from ID using indices
[1] 4
A list can also be modified by accessing the components and replacing them with the ones which you want.
Example: 
R
# R program to edit# components of a list # Creating a list by naming all its componentsempId = c(1, 2, 3, 4)empName = c("Debi", "Sandeep", "Subham", "Shiba")numberOfEmp = 4empList = list(  "ID" = empId,  "Names" = empName,  "Total Staff" = numberOfEmp)cat("Before modifying the list\n")print(empList) # Modifying the top-level componentempList$`Total Staff` = 5 # Modifying inner level componentempList[[1]][5] = 5empList[[2]][5] = "Kamala" cat("After modified the list\n")print(empList)
Output: 
Before modifying the list
$ID
[1] 1 2 3 4

$Names
[1] "Debi"    "Sandeep" "Subham"  "Shiba"  

$`Total Staff`
[1] 4

After modified the list
$ID
[1] 1 2 3 4 5

$Names
[1] "Debi"    "Sandeep" "Subham"  "Shiba"   "Kamala" 

$`Total Staff`
[1] 5
Two lists can be concatenated using the concatenation function. So, when we want to concatenate two lists we have to use the concatenation operator.
Syntax:  
list = c(list, list1)list = the original list list1 = the new list 
Example: 
R
# R program to edit# components of a list # Creating a list by naming all its componentsempId = c(1, 2, 3, 4)empName = c("Debi", "Sandeep", "Subham", "Shiba")numberOfEmp = 4empList = list(  "ID" = empId,  "Names" = empName,  "Total Staff" = numberOfEmp)cat("Before concatenation of the new list\n")print(empList) # Creating another listempAge = c(34, 23, 18, 45)empAgeList = list(  "Age" = empAge) # Concatenation of list using concatenation operatorempList = c(empList, empAgeList) cat("After concatenation of the new list\n")print(empList)
Output: 
Before concatenation of the new list
$ID
[1] 1 2 3 4

$Names
[1] "Debi"    "Sandeep" "Subham"  "Shiba"  

$`Total Staff`
[1] 4

After concatenation of the new list
$ID
[1] 1 2 3 4

$Names
[1] "Debi"    "Sandeep" "Subham"  "Shiba"  

$`Total Staff`
[1] 4

$Age
[1] 34 23 18 45
To delete components of a list, first of all, we need to access those components and then insert a negative sign before those components. It indicates that we had to delete that component. 
Example: 
R
# R program to access# components of a list # Creating a list by naming all its componentsempId = c(1, 2, 3, 4)empName = c("Debi", "Sandeep", "Subham", "Shiba")numberOfEmp = 4empList = list(  "ID" = empId,  "Names" = empName,  "Total Staff" = numberOfEmp)cat("Before deletion the list is\n")print(empList) # Deleting a top level componentscat("After Deleting Total staff components\n")print(empList[-3]) # Deleting a inner level componentscat("After Deleting sandeep from name\n")print(empList[[2]][-2])
Output: 
Before deletion the list is
$ID
[1] 1 2 3 4

$Names
[1] "Debi"    "Sandeep" "Subham"  "Shiba"  

$`Total Staff`
[1] 4

After Deleting Total staff components
$ID
[1] 1 2 3 4

$Names
[1] "Debi"    "Sandeep" "Subham"  "Shiba"  

After Deleting sandeep from name
[1] "Debi"   "Subham" "Shiba" 
We can merge the list by placing all the lists into a single list.
R
# Create two lists.lst1 <- list(1,2,3)lst2 <- list("Sun","Mon","Tue") # Merge the two lists.new_list <- c(lst1,lst2) # Print the merged list.print(new_list)
Output:
[[1]]
[1] 1

[[2]]
[1] 2

[[3]]
[1] 3

[[4]]
[1] "Sun"

[[5]]
[1] "Mon"

[[6]]
[1] "Tue"
Here we are going to convert the list to vector, for this we will create a list first and then unlist the list into the vector.
R
# Create lists.lst <- list(1:5)print(lst) # Convert the lists to vectors.vec <- unlist(lst) print(vec)
Output:
[[1]]
[1] 1 2 3 4 5

[1] 1 2 3 4 5
We will create matrices using matrix() function in R programming. Another function that will be used is unlist() function to convert the lists into a vector.
R
# Defining listlst1 <- list(list(1, 2, 3),            list(4, 5, 6)) # Print listcat("The list is:\n")print(lst1)cat("Class:", class(lst1), "\n") # Convert list to matrixmat <- matrix(unlist(lst1), nrow = 2, byrow = TRUE) # Print matrixcat("\nAfter conversion to matrix:\n")print(mat)cat("Class:", class(mat), "\n")
Output:
The list is:
[[1]]
[[1]][[1]]
[1] 1

[[1]][[2]]
[1] 2

[[1]][[3]]
[1] 3


[[2]]
[[2]][[1]]
[1] 4

[[2]][[2]]
[1] 5

[[2]][[3]]
[1] 6


Class: list 

After conversion to matrix:
     [,1] [,2] [,3]
[1,]    1    2    3
[2,]    4    5    6
Class: matrix 
clintra
akshaysingh98088
anikaseth98
kumar_satyam
R Language
Write From Home
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Change column name of a given DataFrame in R
Filter data by multiple conditions in R using Dplyr
How to Replace specific values in column in R DataFrame ?
Change Color of Bars in Barchart using ggplot2 in R
How to Split Column Into Multiple Columns in R DataFrame?
Convert integer to string in Python
Convert string to integer in Python
How to set input type date in dd-mm-yyyy format using HTML ?
Python infinity
Factory method design pattern in Java