如何在 r 中将列表转换为矩阵(附示例)


您可以使用以下语法将列表转换为 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中将数据框列转换为向量

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注