30

我想声明一个包含 M 3 x 3 矩阵的列表。如果我事先知道数字 M,那么我可以通过以下方式声明这样的列表:

elm <- matrix(NA,3,3)
## Say M = 7
myList <- list(elm,elm,elm,elm,elm,elm,elm) 

如果 M 很大,这种方法会变得很麻烦。更糟糕的是,如果我事先不知道 M 的值,这种方法不起作用。如果我想声明一个长度为 M 的向量,我可以通过调用:

myVec <- rep(NA,M)

即使我事先不知道 M 的值。是否有类似的方法来声明大小为 M 的列表?

4

2 回答 2

71

也许是这样:

myls <- vector("list", length = S)

于 2013-10-12T23:04:54.870 回答
21

尝试

mylist <- rep(list(elm),7)

其中,对于 S=3,给出

[[1]]
     [,1] [,2] [,3]
[1,]   NA   NA   NA
[2,]   NA   NA   NA
[3,]   NA   NA   NA

[[2]]
     [,1] [,2] [,3]
[1,]   NA   NA   NA
[2,]   NA   NA   NA
[3,]   NA   NA   NA

[[3]]
     [,1] [,2] [,3]
[1,]   NA   NA   NA
[2,]   NA   NA   NA
[3,]   NA   NA   NA

顺便说一句,identical(matrix(NA,3,3),matrix(,3,3))是真的,因为矩阵NA默认初始化为。见?matrix

于 2013-10-12T23:25:10.737 回答