首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将矩阵作为列表存储时矩阵的求和

将矩阵作为列表存储时矩阵的求和
EN

Stack Overflow用户
提问于 2021-05-26 19:41:31
回答 1查看 29关注 0票数 1

在另一个线程的帮助下,我能够构造以下矩阵,在每一个相同维度的100×100的内有100个对角矩阵:

代码语言:javascript
复制
Sigma_inverse<-lapply(seq(n), function(k) (diag(seq(n)))^(2*k+1))

我有另一个矩阵S,是100乘100。如果我按照下面的代码对矩阵进行求和,它就能工作。

代码语言:javascript
复制
S+Sigma_inverse[[1]]

但是,如果我试图创建另一个包含100个列表的矩阵,其中的矩阵为100×100,并将第一个元素之和为或预期为100×100矩阵,如下代码所示:

代码语言:javascript
复制
S_alpha_dim[[1]]+Sigma_inverse[[1]]

我得到以下错误:

代码语言:javascript
复制
> S_alpha_dim[[1]]+Sigma_inverse[[1]]
Error: dims [product 10000] do not match the length of object [1000000]

因此,我继续检查矩阵S_alpha_dim[1]的维数。

代码语言:javascript
复制
> dim(S_alpha_dim[[1]])
NULL

这是空的,但是后面的矩阵被认为是矩阵S,它是一个100乘100的矩阵,如下所证明:

代码语言:javascript
复制
> dim(S)
[1] 100 100

因此,我开始怀疑R没有将列表识别为矩阵中的矩阵。但是,我遵循这条线索,建议使用列表来表示矩阵中的矩阵。is it possible to have a matrix of matrices in R?

问题:

有人能帮我解决这个问题吗?

更新:

作为S的参考矩阵,为了使代码能够被再现,它类似于使用以下构造和一个2乘2的矩阵,从而产生同样的问题:

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-05-26 20:04:11

我认为你应该使用rep(list(...),100),而不是list(rep(...,100)),也就是说,

代码语言:javascript
复制
matrix_eksa_1 <- matrix(rep(list(matrix_eksa), 100), 100)

然后你会看到

代码语言:javascript
复制
> matrix_eksa <- matrix(c(1, 2, 3, 4), 2, 2)

> matrix_eksa_1 <- matrix(rep(list(matrix_eksa), 100), 100)

> dim(matrix_eksa_1)
[1] 100   1
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67711701

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档