如何在R中创建矩阵列表

Man*_*oon 14 r list matrix

我想创建一个2D矩阵列表

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

> y
     [,1] [,2]
[1,]  301  306
[2,]  302  307
[3,]  303  308
[4,]  304  309
[5,]  305  310

> MATS<-c(x,y)

> MATS[1]
[1] 1
Run Code Online (Sandbox Code Playgroud)

我希望能够将MATS [1]称为x ...

Jil*_*ina 14

尝试

x <- matrix(1:10, ncol=2)
y <- x+300

MATS <- list(x, y) # use 'list' instead of 'c' to create a list of matrices
MATS
[[1]]
     [,1] [,2]
[1,]    1    6
[2,]    2    7
[3,]    3    8
[4,]    4    9
[5,]    5   10

[[2]]
     [,1] [,2]
[1,]  301  306
[2,]  302  307
[3,]  303  308
[4,]  304  309
[5,]  305  310
Run Code Online (Sandbox Code Playgroud)

在这里,你必须提到MATS[[1]]它好像是x

如果要将新矩阵附加到退出列表,请尝试

z <- x+500
MATS[[3]] <- z  # appeding a new matrix to the existing list
MATS

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

[[2]]
     [,1] [,2]
[1,]  301  306
[2,]  302  307
[3,]  303  308
[4,]  304  309
[5,]  305  310

[[3]]
     [,1] [,2]
[1,]  501  506
[2,]  502  507
[3,]  503  508
[4,]  504  509
[5,]  505  510
Run Code Online (Sandbox Code Playgroud)

这种方法的一个缺点是你必须知道列表中你必须附加新矩阵的位置,如果你不知道它或者只是你不想要这种方法,那么这里有一个技巧:

unlist(list(MATS, list(z)), recursive=FALSE) # will give u the same list :D
Run Code Online (Sandbox Code Playgroud)