如何在 R 中创建二维列表

how to create two-dimension list in R

我想把matlab code转入R,ctlist是向量,matlab code如下:

telist{i,j}=ctlist;
[value,number]=max(ctlist);

我只是想知道 R 中是否有 "data structure" 就像 matlab 中的列表{i,j}

您可以有无限嵌套的列表:

list1 <- list()

list1[[1]] <- list()

list[[1]][[1]] <- list()

等等...

但是对于一个更实际的例子,假设你想要 2 个列表,每个列表中有 3 个列表:

my.list.1 <- list()
my.list.1[[1]] <- list()
my.list.1[[2]] <- list()
my.list.1[[3]] <- list()

my.list.2 <- list()
my.list.2[[1]] <- list()
my.list.2[[2]] <- list()
my.list.2[[3]] <- list()

是否有特定的语法可以立即创建这些列表结构?

根据 Richard Skriven 的评论,replicate 可以做到这一点。示例:my.lists <- replicate(n=5, expr=list()) 将同时创建 5 个列表并将它们存储在名称 my.lists.

填写列表

您确实可以用向量、矩阵或数组填充任何这些列表或子列表。例如:

my.list.1[[1]][[1]] <- c(1,5,3,3,5,3)
my.list.1[[1]][[2]] <- matrix(0, nrow=10, ncol=10)

没有限制,真的。

动态扩展列表

您还可以在列表中动态添加元素,例如在循环中:

my.list <- list() # we're creating a new one, but the following loop could
                  # be using a pre-existing list with data already inside
for(i in 1:10) {
  my.list[[length(my.list) + 1]] <- (i*1):(i*200)
}

数组

但是,如果您的所有数据都是以 "rectangular/cubic" 方式构建的同一类型,您可以使用多维 数组 .

> array(data = NA, dim = c(3,3,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