How to convert matrix to list of vectors in R ? - GeeksforGeeks

08 May, 2021
In this article, we will learn how to convert a matrix into a list of vectors in R Programming Language.
Method 1: Using as.list() function
To convert columns of the matrix into a list of vectors, we first need to convert the matrix to a dataframe object, which can be done by using as.data.frame(matrix_name), which takes our matrix as an argument and returns a dataframe. Once our matrix is converted into a dataframe we can pass our newly created(by conversion) dataframe as an argument into as.list(dataframe_name) function, which converts our dataframe into a list of vectors.
Syntax: 
as.list(as.data.frame(matrix_name))
Example 1:
R
mat<-matrix(1:20, ncol=4)print("Sample Matrix")mat  print("List of Vectors after conversion")list<-as.list(as.data.frame(mat))list  
Output:
 [1] "Sample Matrix"
     [,1] [,2] [,3] [,4]
[1,]    1    6   11   16
[2,]    2    7   12   17
[3,]    3    8   13   18
[4,]    4    9   14   19
[5,]    5   10   15   20
[1] "List of Vectors after conversion"
$V1
[1] 1 2 3 4 5
$V2
[1]  6  7  8  9 10
$V3
[1] 11 12 13 14 15
$V4
[1] 16 17 18 19 20
Method 2: Using split() and rep()
We pass our sample matrix and replicated elements of vectors to divide the data as the parameters into split() function, which returns our list object.
split() function is used to divide a data vector into groups as defined by the factor provided. 
Syntax: split(x, f)
Parameters:
x: represents data vector or data frame
f: represents factor to divide the data
rep() is used to replicate the elements of vectors in R programming.
Syntax: rep(x, times)
Parameter:
x: represents data vector or data frame
times: frequency of appearance
Return: Returns the replicated vectors.
Example:
R
mat<-matrix(1:20, ncol=4)print("Sample Matrix")mat  list = split(mat, rep(1:ncol(mat), each = nrow(mat)))  print("After converting Matrix into a List")print(list)
Output:
[1] "Sample Matrix"
     [,1] [,2] [,3] [,4]
[1,]    1    6   11   16
[2,]    2    7   12   17
[3,]    3    8   13   18
[4,]    4    9   14   19
[5,]    5   10   15   20
[1] "After converting Matrix into a List"
$`1`
[1] 1 2 3 4 5
$`2`
[1]  6  7  8  9 10
$`3`
[1] 11 12 13 14 15
$`4`
[1] 16 17 18 19 20
Method1: Using as.list()
The approach to use this method is the same as above but to get rows we first have to get a transpose of the matrix. The t(matrix_name) function can be used. 
Syntax: 
as.list(as.data.frame(t(matrix_name)))
Example:
R
mat<-matrix(1:20, ncol=4)print("Sample Matrix")mat  print("List of Vectors after conversion")  list<-as.list(as.data.frame(t(mat)))list  
Output:
[1] "Sample Matrix"
     [,1] [,2] [,3] [,4]
[1,]    1    6   11   16
[2,]    2    7   12   17
[3,]    3    8   13   18
[4,]    4    9   14   19
[5,]    5   10   15   20
[1] "List of Vectors after conversion"
$V1
[1]  1  6 11 16
$V2
[1]  2  7 12 17
$V3
[1]  3  8 13 18
$V4
[1]  4  9 14 19
$V5
[1]  5 10 15 20
Method 2: Using split() and rep()
Similarly in this method also we have to find the transpose of the matrix and rest of the approach is same as above.
Syntax: 
split(mat, rep(1:ncol(mat), each = nrow(mat)))
Example:
R
mat<-matrix(1:20, ncol=4)print("Sample Matrix")mat  t_mat=t(mat)list = split(  t_mat, rep(1:ncol(t_mat), each = nrow(t_mat)))  print("After converting Matrix into a List")print(list)
Output:
[1] "Sample Matrix"
     [,1] [,2] [,3] [,4]
[1,]    1    6   11   16
[2,]    2    7   12   17
[3,]    3    8   13   18
[4,]    4    9   14   19
[5,]    5   10   15   20
[1] "After converting Matrix into a List"
$`1`
[1]  1  6 11 16
$`2`
[1]  2  7 12 17
$`3`
[1]  3  8 13 18
$`4`
[1]  4  9 14 19
$`5`
[1]  5 10 15 20
Picked
R Matrix-Programs
R-Matrix
R Language
R Programs
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Change Color of Bars in Barchart using ggplot2 in R
Group by function in R using Dplyr
How to Change Axis Scales in R Plots?
How to Split Column Into Multiple Columns in R DataFrame?
Replace Specific Characters in String in R
How to Split Column Into Multiple Columns in R DataFrame?
Replace Specific Characters in String in R
How to filter R DataFrame by values in a column?
How to filter R dataframe by multiple conditions?
Convert Matrix to Dataframe in R