Вы можете использовать следующий синтаксис для преобразования списка в матрицу в R:
#convert list to matrix (by row)
matrix(unlist(my_list), ncol= 3 , byrow= TRUE )
#convert list to matrix (by column)
matrix(unlist(my_list), ncol= 3 )
В следующих примерах показано, как использовать этот синтаксис на практике.
Пример 1: преобразование списка в матрицу (по строкам)
Следующий код показывает, как преобразовать список в матрицу (по строкам) в R:
#create list
my_list <- list(1:3, 4:6, 7:9, 10:12, 13:15)
#view list
my_list
[[1]]
[1] 1 2 3
[[2]]
[1] 4 5 6
[[3]]
[1] 7 8 9
[[4]]
[1] 10 11 12
[[5]]
[1] 13 14 15
#convert list to matrix
matrix(unlist(my_list), ncol= 3 , byrow= TRUE )
[,1] [,2] [,3]
[1,] 1 2 3
[2,] 4 5 6
[3,] 7 8 9
[4,] 10 11 12
[5,] 13 14 15
В результате получается матрица с 5 строками и 3 столбцами.
Пример 2: преобразование списка в матрицу (по столбцам)
Следующий код показывает, как преобразовать список в матрицу (по столбцам) в R:
#create list
my_list <- list(1:5, 6:10, 11:15)
#view list
my_list
[[1]]
[1] 1 2 3 4 5
[[2]]
[1] 6 7 8 9 10
[[3]]
[1] 11 12 13 14 15
#convert list to matrix
matrix(unlist(my_list), ncol= 3 )
[,1] [,2] [,3]
[1,] 1 6 11
[2,] 2 7 12
[3,] 3 8 13
[4,] 4 9 14
[5,] 5 10 15
В результате получается матрица с 5 строками и 3 столбцами.
Предостережения по преобразованию списка в матрицу
Обратите внимание, что R выдаст ошибку, если вы попытаетесь преобразовать список в матрицу, в которой каждая позиция списка имеет разное количество элементов.
Следующий пример иллюстрирует это положение:
#create list
my_list <- list(1:5, 6:10, 11:13)
#view list
my_list
[[1]]
[1] 1 2 3 4 5
[[2]]
[1] 6 7 8 9 10
[[3]]
[1] 11 12 13
#attempt to convert list to matrix
matrix(unlist(my_list), ncol= 3 )
Warning message:
In matrix(unlist(my_list), ncol = 3) :
data length [13] is not a sub-multiple or multiple of the number of rows [5]
Дополнительные ресурсы
В следующих руководствах объясняется, как выполнять другие распространенные преобразования в R:
Как преобразовать список в вектор в R
Как преобразовать матрицу в вектор в R
Как преобразовать столбец фрейма данных в вектор в R