在另一个线程的帮助下,我能够构造以下矩阵,在每一个相同维度的100×100的内有100个对角矩阵:
Sigma_inverse<-lapply(seq(n), function(k) (diag(seq(n)))^(2*k+1))我有另一个矩阵S,是100乘100。如果我按照下面的代码对矩阵进行求和,它就能工作。
S+Sigma_inverse[[1]]但是,如果我试图创建另一个包含100个列表的矩阵,其中的矩阵为100×100,并将第一个元素之和为或预期为100×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乘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发布于 2021-05-26 20:04:11
我认为你应该使用rep(list(...),100),而不是list(rep(...,100)),也就是说,
matrix_eksa_1 <- matrix(rep(list(matrix_eksa), 100), 100)然后你会看到
> 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 1https://stackoverflow.com/questions/67711701
复制相似问题