【发布时间】:2021-05-27 04:04:11
【问题描述】:
在另一个线程的帮助下,我能够构建以下矩阵,每个矩阵内部有 100 个对角矩阵,每个矩阵的维度为 100 x 100:
Sigma_inverse<-lapply(seq(n), function(k) (diag(seq(n)))^(2*k+1))
我有另一个矩阵 S,它是 100 x 100。如果我按照以下代码对矩阵求和,它就可以工作。
S+Sigma_inverse[[1]]
但是,如果我尝试创建另一个包含 100 个列表的矩阵,矩阵 100 x 100 并将第一个元素相加,或者我希望是 100 x 100 矩阵,如下代码所示:
S_alpha_dim[[1]]+Sigma_inverse[[1]]
我收到以下错误:
> S_alpha_dim[[1]]+Sigma_inverse[[1]]
Error: dims [product 10000] do not match the length of object [1000000]
于是我开始检查矩阵 S_alpha_dim[[1]] 的维度
> dim(S_alpha_dim[[1]])
NULL
这是空的,但后面的矩阵应该是矩阵 S,它是一个 100 x 100 的矩阵,因为它由以下证明:
> dim(S)
[1] 100 100
所以我开始怀疑 R 没有将列表识别为矩阵内的矩阵。但是,我遵循了这个线程,建议使用列表来表示矩阵中的矩阵。 is it possible to have a matrix of matrices in R?
问题:
有人可以帮我解决这个问题吗?
更新:
作为 S 的参考矩阵,以便可以重现代码,它类似于使用以下构造与 2 × 2 矩阵,呈现相同的问题:
matrix_eksa<-matrix(c(1,2,3,4),2,2)
> matrix_eksa_1<-matrix(list(rep(matrix_eksa,100)),100)
> dim(matrix_eksa_1[1])
NULL
【问题讨论】:
-
似乎
S_alpha_dim[[1]]不是矩阵。你最好展示一个小例子。 -
@ThomasIsCoding 请查看我的更新。
-
什么是
matrix_eksa? -
@ThomasIsCoding
matrix_eksa<-matrix(c(1,2,3,4),2,2)
标签: r