One of the most important data structures in R is List. A list is a great tool to store many kinds of objects in the order expected. We can include matrices, vectors data frames, or lists. We can imagine a list as a bag in which we want to put many different items. When we need to use an item, we open the bag and use it. A list is similar; we can store a collection of objects and use them when we need them.

## Creating a List

To create a list in R we need to use `list()` function

``> list1 <- list(comp1, comp2, comp3, ...)``

The arguments to the list function are the list components. Remember, these components can be matrices, vectors, other lists, …

A single list can even contain vector, matrix, array, and also a list too.

``````# Let's create a vector
> vec1 <- c(1:5)

# Now let's create a matrix
> mat <- matrix(1:10, ncol = 5)

# Now let's create logical vector
> vec2 <- c(TRUE, FALSE, FALSE, TRUE, TRUE)

# Now let's create a list consisting of vector and matrix
> list2 <- list(vec1, vec2, mat)
> list2
[[1]]
[1] 1 2 3 4 5

[[2]]
[1]  TRUE FALSE FALSE  TRUE  TRUE

[[3]]
[,1] [,2] [,3] [,4] [,5]
[1,]    1    3    5    7    9
[2,]    2    4    6    8   10
``````

## Creating a named list

We can also name the list components to avoid not knowing or remembering what the components of your list stand for.

``````> my_list <- list(name1 = comp1,
name2 = comp2)
# or

> my_list <- list(comp1, comp2)
> names(my_list) <- c("name1", "name2")

# Let's name our list which we just created
> names(list2) <- c("Num_Vector", "Logical_Vector", "Matrix")
> list2

\$Num_Vector
[1] 1 2 3 4 5

\$Logical_Vector
[1]  TRUE FALSE FALSE  TRUE  TRUE

\$Matrix
[,1] [,2] [,3] [,4] [,5]
[1,]    1    3    5    7    9
[2,]    2    4    6    8   10``````

## Selecting element from list

After we built our list, we can access it quite easily. We need to use the [[index]] to select an element in a list. The value inside the double square bracket represents the position of the item in a list we want to extract. For instance, we pass 2 inside the parenthesis, R returns the second element listed.

``````# Access first element of list2
> list2[[1]]
[1] 1 2 3 4 5

# Access first element of the list2 with name
> list2\$Num_Vector
[1] 1 2 3 4 5

# Access first element along with its name in the list2
> list2[1]
\$Num_Vector
[1] 1 2 3 4 5``````

## Manipulating elements in a List

We can add,delete, update elements in List

### Update elements in a List

``````# Let's update the existing element at 1st index from list2
> list2[[1]] <- c(1:10)
> list2[[1]]
[1]  1  2  3  4  5  6  7  8  9 10``````

### Delete elements in a List

``````# To delete element just assign NULL to it
> list2[[3]] <- NULL
> list2[[3]]
Error in list2[[3]] : subscript out of bounds``````

### Add elements in a List

``````# Let's add new vector to 3rd index of the list
> list2[[3]]
Error in list2[[3]] : subscript out of bounds

> list2[[3]] <- seq(100,110, 2)
> list2
\$Num_Vector
[1]  1  2  3  4  5  6  7  8  9 10

\$Logical_Vector
[1]  TRUE FALSE FALSE  TRUE  TRUE

[[3]]
[1] 100 102 104 106 108 110``````

### How to Convert R List to Vector

A list can be converted to a vector so that the elements of the vector can be used for further manipulation. All the arithmetic operations on vectors can be applied after the list is converted into a vector. To do this conversion, we can use the `unlist()` function. It takes the list as input and produces a vector.

``````# Create a list
> list_1 <- list(1:5)
> print(list_1)
[[1]]
[1] 1 2 3 4 5

> vec_1 <- unlist(list_1)
print(vec_1)
[1] 1 2 3 4 5
``````

## Conclusion

We have studied R List in this article. We all are aware, that lists are the object which contains elements of different types like strings, numbers, and vectors. And we also Studied how to perform operations on the list.

This brings the end of this Blog. We really appreciate your time.

Hope you liked it.