假设我有3个矩阵C
,W
和S
C <- matrix(1:3)
W <- matrix(2:4)
S <- matrix(3:5)
我想制作一个矩阵,将这些矩阵作为元素。说矩阵K
,但矩阵K
的每个元素本身就是一个矩阵。正如矩阵列表一样,但是以矩阵形式。即:
> K
[,1] [,2] [,3]
[1,] C 0 0
[2,] 0 W S
C
,W
和S
都是存储在较大矩阵K
内的矩阵对象。
最后,我希望能够使用像K %*% K
或类似的矩阵乘法。
答案 0 :(得分:2)
R矩阵中没有很多类可以成为元素。特别是依赖于行为属性的对象不能是保留其基本特征的对象。具有讽刺意味的是,它包括矩阵本身,因为它们的行为受昏暗(ension)属性的支配。该排除适用于日期,因素和数据框等专用列表。您可以将列表作为可索引项目包含在矩阵中,但正如@ thelatemail的评论所指出的那样,这将有点笨拙。
> C <- matrix(0, 3,2)
> W <- matrix(1, 4,5)
> S <- matrix(2, 6,7)
> bigM <- matrix( list(), 2, 3)
> bigM[1,1] <- list(C)
> bigM[2,2] <- list(W)
> bigM[2,3] <- list(S)
> bigM
[,1] [,2] [,3]
[1,] Numeric,6 NULL NULL
[2,] NULL Numeric,20 Numeric,42
> bigM[2,3][[1]][42]
[1] 2
注意在将[[1]]
作为带有[2,3]
的列表提取后,需要使用[6,7]
提取矩阵。只有在那个附加步骤之后,你才能得到矩阵中的第42个项目,如果你选择通过row,column
索引引用它,那么它们就是{{1}}项。