如何在R中将矩阵列转换为向量列表?

如果要使用矩阵的列作为向量,则可以将它们转换为向量列表。要将矩阵列转换为向量列表,我们首先需要将矩阵转换为数据框,然后才能将其读取为列表。这可以作为as.list(as.data.frame(matrix_name))完成。

示例

考虑下面的矩阵-

> M<-matrix(1:25,nrow=5)
> M
[,1] [,2] [,3] [,4] [,5]
[1,] 1 6 11 16 21
[2,] 2  7 12 17 22
[3,] 3  8 13 18 23
[4,] 4  9 14 19 24
[5,] 5 10 15 20 25

将矩阵M列转换为向量-

> V<-as.list(as.data.frame(M))
> V
$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
$V5
[1] 21 22 23 24 25
> str(V)
List of 5
$ V1: int [1:5] 1 2 3 4 5
$ V2: int [1:5] 6 7 8 9 10
$ V3: int [1:5] 11 12 13 14 15
$ V4: int [1:5] 16 17 18 19 20
$ V5: int [1:5] 21 22 23 24 25

检查V1,V2,V3,V4和V5是否为向量-

> is.vector(V$V1)
[1] TRUE
> is.vector(V$V2)
[1] TRUE
> is.vector(V$V3)
[1] TRUE
> is.vector(V$V4)
[1] TRUE
> is.vector(V$V5)
[1] TRUE

将非平方矩阵列转换为矢量列表-

> M_new<-matrix(1:50,nrow=5)
> M_new
   [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,] 1    6   11   16   21   26   31   36   41    46
[2,] 2    7   12   17   22   27   32   37   42    47
[3,] 3    8   13   18   23   28   33   38   43    48
[4,] 4    9   14   19   24   29   34   39   44    49
[5,] 5   10   15   20   25   30   35   40   45    50
> V_new<-as.list(as.data.frame(M_new))
> V_new
$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
$V5
[1] 21 22 23 24 25
$V6
[1] 26 27 28 29 30
$V7
[1] 31 32 33 34 35
$V8
[1] 36 37 38 39 40
$V9
[1] 41 42 43 44 45
$V10
[1] 46 47 48 49 50