web-dev-qa-db-ja.com

Rで行列のリストを作成する方法

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

MATS [1]をxのように参照できるようにしたい...

15
ManInMoon

試す

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

ここでは、xのようにMATS[[1]]を参照する必要があります

既存のリストに新しい行列を追加したい場合は、

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

このアプローチの1つの欠点は、新しいマトリックスを追加する必要があるリスト内の位置を知る必要があることです。それがわからない場合、または単にこのアプローチが不要な場合は、次のトリックがあります。

unlist(list(MATS, list(z)), recursive=FALSE) # will give u the same list :D
13
Jilber Urbina