# R Lists

R provides list() function to create lists. A list may contain different objects or we can also say that it can combine objects of different types like strings, integer, vectors, matrix. A list is a generic vector. A vector has all elements of the same type, but a list may contain elements of different types.

## Creating a list

The following command generates a list that contains students data. In this, there are two vectors, a string and a boolean value.

``````x <- list(c(1, 3, 5), c('sophiya', 'somya', 'Jorz'), "IT", TRUE)
[[1]]
[1] 1 3 5

[[2]]
[1] "Sophiya" "Somya"   "Jorz"

[[3]]
[1] "IT"

[[4]]
[1] TRUE``````

## Give name to the list element

We can give a particular name to each of the list elements with help of names() function, for example -

``````x <- list(c(1, 3, 5), c('sophiya', 'somya', 'Jorz'), "IT")
names(x) <- c("id", "name", "Department")
print(x)``````

## Access element of list

A list element can be accessed by its index. It starts with index 1 unlike in other programming language element starts with 0 index. We can use the [ ] brackets for indexing.

``````print(x[1])
[[1]]
[1] 1 3 5``````

## Add element to an existing list

Suppose, we have the following lists.

``x <- list(c(1, 3, 5), c('sophiya', 'somya', 'Jorz'), "IT", TRUE)``

We can add a new element to the end of the list either by assigning the new value to list index (increase one to the last index) or by giving a name to the new index. The below list contains student's data. We add a new list element of name gender.

``````x <- list(c(1, 3, 5), c('sophiya', 'somya', 'Jorz'), "IT", TRUE)
x\$gender <- c('F', 'F', 'M')
print(x)
[[1]]
[1] 1 3 5

[[2]]
[1] "Sophiya" "Somya"   "Jorz"

[[3]]
[1] "IT"

[[4]]
[1] TRUE

\$gender
[1] "F" "F" "M"
``````

We can also add an element to the list by using the index. like -

``````x[6] <- c(F, F, M)
x``````

## Get length of a list

In R, the length() function returns the length of a list.

``````length(x)
[1] 5``````

## Delete list element

To delete a list element, simply assign it to a null value.

``````x[5] <- NULL
x
[[1]]
[1] 1 3 5

[[2]]
[1] "Sophiya" "Somya"   "Jorz"

[[3]]
[1] "IT"

[[4]]
[1] TRUE
``````

## Update list element

To modify a list element, simply assign the element index with new value with the help of assignment operator. In the below example, we modify the third list element.

``````x <- list(c(1, 3, 5), c('sophiya', 'somya', 'Jorz'), "IT", TRUE)
x[3] <- "Mech"
print(x)
``````