R中的矩阵矩阵(作为列表)

时间:2014-04-08 00:07:38

标签: r matrix

假设我有3个矩阵CWS

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

CWS都是存储在较大矩阵K内的矩阵对象。

最后,我希望能够使用像K %*% K或类似的矩阵乘法。

1 个答案:

答案 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}}项。