In this tutorial, you will learn about the list data structure in R. How to create a list, the functions supported by the list, etc.
In R, a list is a data structure of generic vectors containing heterogeneous data type elements. In simple words, a list is an object which contains elements of different data types like characters, numerical, logical, vectors, etc. A list is one-dimensional with an ordered collection of different (heterogeneous) data type elements.
A list contains a collection of basic data types like numeric, integer, character type elements to form a heterogeneous data structure. Like in other programming languages, the R programming language provides indexing of each element that constitutes a list. In the list, indexing begins with 1 as in vectors in R which are used for accessing elements or for some list element manipulation operations.
In R a list is created using a function list().
Name_of_list = list(mention_list_elements)
Consider an example of the Students record with Student name, roll number, section, the item they participate in an event. We know a list is a generic vector object. In other words, a list is a collection of vectors.
Student_Name = c("Alliet","James","Sarah")
Student_Rollno = c(3,11,19)
class = c("X") secti
item = c("Singing","Playing","Dance")
Here 5 vectors such as Student_Name , Student_Rollno , class , section , item are created using c() function (link to vector) and they are of different data type elements. The vector Student_Name is of character data type elements, vector Student_Rollno is of numeric data type elements and so on.
A list is a data structure that supports to include all these different (heterogeneous) vectors created to organize under one structure. The student_list is created using list() function. The parentheses () include all the vectors that constitute a list such as Student_Name, Student_Rollno, class, section, item as shown below
student_list = list(Student_Name,Student_Rollno,class,section,item) # created list using list()
Now let us see the result produced after executing these codes together
Student_Name = c("Alliet","James","Sarah") #vectors are created of character, numeric data types
Student_Rollno = c(3,11,19)
class = c("X") secti
item = c("Singing","Playing","Dance")
student_list = list(Student_Name,Student_Rollno,class,section,item) #a list is created using list()
print(student_list) #prints the result
When the code is executed it displays a list (student_list )of vectors.
Output:
[[1]] [1] "Alliet" "James" "Sarah" [[2]] [1] 3 11 19 [[3]] [1] "X" [[4]] [1] "A" "B" "B" [[5]] [1] "Singing" "Playing" "Dance"
As we discussed in our previous tutorial, the list also supports functions like typeof()
,length()
, is.list()
.
Function | Description | R code | Output |
---|---|---|---|
typeof() | Determines the list data type | typeof(student_list) |
> typeof(student_list) [1] "list" |
length() | To check list length | length(student_list) |
> length(student_list) [1] 3 |
is.list() | To check list length | is.list(student_list) |
> is.list(student_list) [1] TRUE> |
Let us see a table to compare the difference between vector and list.
Vector | List |
---|---|
A vector is a homogeneous data structure. | A list is a heterogeneous data structure. |
A vector is 1D.(one dimensional) | A list is multidimensional. |
It is created using c(). | It is created using list(). |
Example :
|
Example :
|
Note : In R programming both vectors and list indexing begins with 1 unlike other languages such as C, jAVA ,python etc.
Thus a list is a collection of vectors of heterogeneous data elements. A list can also contain numeric, character, logical basic data types other than vector types .Above example we discussed list consist of vector data structure. Let's create a list of elements containing numeric, logical, integer and vector data types:
a <- list(site = "Learn eTutorials", Lang ="R ", Year = 2022, tutorials =c("GO","PYTHON","DATA SCIENCE"))
Output:
> a <- list(site = "Learn eTutorials",Lang ="R ", Year = 2022,tutorials =c("GO","PYTHON","DATA SCIENCE")) > a $site [1] "Learn eTutorials" $Lang [1] "R " $Year [1] 2022 $tutorials [1] "GO" "PYTHON" "DATA SCIENCE"
There are two ways/methods to create a list
Creating list in single line with declaration of variables | Declaring variables in multiple lines & Creating list |
---|---|
|
|
Output
$A [1] 1 $B [1] "hello" "haii" $D [1] TRUE |
Output
[[1]] [1] 1 [[2]] [1] "hello" "haii" [[3]] [1] TRUE |
Along with the Index the output is displayed. [[1]] [[2]] [[3]] |
You can give names to list elements in two ways in R programming.
NEW_List = list ("name1" = <list _element>,"name2 "= ,….)
A = 1
B=c("hello","haii")
C =TRUE
NEW_List = list("first" = A,"Second"=B ,"Third"=C)
print(NEW_List)
print(NEW_List$Third)
The NEW_List is the created list with names given as “first”,”second”,”third” corresponding to each elements in list.
The corresponding output after naming list element is
$first [1] 1 $Second [1] "hello" "haii" $Third [1] TRUE
Let us create a name for the above-discussed program using the names()
function.List elements (vector) can be created by c() function which assigns new names corresponding to each position of list elements.
names(NEW_List)=c("name1","name2","name3")
Let us check the whole R source code to understand how we can give the names to the list elements
A = 1
B=c("hello","haii")
C =TRUE
# Creating a list containing a vector, a matrix and a list.
NEW_List = list(A,B ,C)
# Giving names to the elements in the list.
names(NEW_List)=c("first" ,"Second" ,"Third")
# Show the list.
print(NEW_List)
Here first in first position gives name to A = 1, the name Second is assigned to B=c("hello","haii") and so on.
The corresponding output after naming list element is
$first [1] 1 $Second [1] "hello" "haii" $Third [1] TRUE
Let us see the difference between two approaches
Giving names while creating list | Giving name using names() |
---|---|
Syntax :
|
Syntax :
|
Output $first [1] 1 $Second [1] "hello" "haii" $Third [1] TRUE |
Output $first [1] 1 $Second [1] "hello" "haii" $Third [1] TRUE |
You can access elements from a list using the index of elements or by their names in the list ie by using the position numbers of values or element names. Look at the above table example and output for code
A = 1
B=c("hello","haii")
D =TRUE
A = list(A,B,D)
print(A)
print(A[1])
print(A[2])
It is easy to access elements by providing index numbers inside square brackets along with the name of the list from which element needs to access in a print()
function.
> print(A[1]) [[1]] [1] 1 > print(A[2]) [[1]] [1] "hello" "haii"
$
command
A = 1
B=c("hello","haii")
C =TRUE
NEW_List = list("first" = A,"Second"=B ,"Third"=C)
print(NEW_List)
# Access by names
cat("Access element by name using $ command\n")
print(NEW_List$Third)
Output:
$first [1] 1 $Second [1] "hello" "haii" $Third [1] TRUE Access element by name using $ command [1] TRUE >
A new element can be added to a list by specifying the name of variable or vector type defined with the next preferred index number within square brackets and the value that needs to assign to it.
In the previous code we created a list with index value 3. Let us add a new element to the list.
A[4]= "NEW ELEMENT"
print(A[4])
Let us check how the addition of a new element gets executed with above piece of code
A = 1
B=c("hello","haii")
D =TRUE
A = list(A,B,D)
print(A)
A[4]= "NEW ELEMENT"
print(A[4])
We added a new element at index 4.Lets us see the change occurred in list A after addition of new element. Use print(A) function to display or view the whole list.
[[1]] [1] 1 [[2]] [1] "hello" "haii" [[3]] [1] TRUE [[1]] [1] "NEW ELEMENT"
In R list elements are removed by indicating a negative sign upon the index of the element which needs to be removed/delete from list.
print(Variable_name[-<index>])
Student_Name = c("Alliet","James","Sarah")
Student_Rollno = c(3,11,19)
class = c("X") secti
item = c("Singing","Playing","Dance")
student_list = list(Student_Name,Student_Rollno,class)
print(student_list)
print(student_list[-1])
When the code print(student_list[-1])
gets executed it results in removal of value at index 1.The list will contain only the elements Student_Rollno, class.
Output:
> print(student_list) [[1]] [1] "Alliet" "James" "Sarah" [[2]] [1] 3 11 19 [[3]] [1] "X" > print(student_list[-1]) [[1]] [1] 3 11 19 [[2]] [1] "X" >
You can easily update or modify list element values by mentioning the index of the element in the list that needs to be modified or updated.
These codes update elements or values by providing index values.
student_list[[2]][2]= 14
#updated with a new value at second position of the 2nd index element in list
student_list[[1]][3]="Williams" #added element at third position of first index element in list
student_list[[1]][3]="Stephen" #updated with new name
print(student_list)
When these codes get executed student_list[[2]][2]= 14
the second index of the list ie, Student_Rollno is identified and within Student_Rollno the element present at index 2 or second position is updated from 11 to 14. The value to which updation or modification is required is assigned to the corresponding index position.
[[1]] [1] "Alliet" "James" "Stephen" [[2]] [1] 3 14 19 [[3]] [1] "X"
You can see that Student_Name = c("Alliet","James”)
gets updated to "Alliet" "James" "Stephen". Similarly Student_Rollno = c(3,11,19)
modified as 3 14 19.
str()
function in the R list ? or How to check the structure of a list?In R the internal structure of a list is displayed using str()
function.
The internal structure of the student_list of our previous examples is checked using str()
function. The command str(student_list) displays the list structure as given below
You can infer from the output the str()
function displays the contents of list elements with index range and their basic data types.
Lists can be concatenated in the R list using the following syntax
New_list =c(list1,list2,…)
a =list("R",7,x=c(3,4))
b= list(y=c(TRUE,FALSE,FALSE),Z=34L)
NEW_LIST =c(a,b)
print(NEW_LIST)
Output:
[[1]] [1] "R" [[2]] [1] 7 $x [1] 3 4 $y [1] TRUE FALSE FALSE $Z [1] 34 >
The unlist() function is used to convert a list to vector in R.
unlist(list_name)
a =list("R",7,x=c(3,4)) #CREATED A LIST
b =unlist(a) #unlist converts list to vector
print(b)
Output:
x1 x2 "R" "7" "3" "4"
function | Description |
---|---|
list() | To create a list |
names() | To attach names to a list |
typeof() | Determines the list data type |
length() | To check list length |
is.list() | To check existence of a list |
str() | To check internal structure of a list |
unlist() | To convert list to vector. |