如何在R中创建二维表 [英] how to create two-dimension list in R
本文介绍了如何在R中创建二维表的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想把matlab code
转到R,ctlist
是一个向量,matlab code
如下:
telist{i,j}=ctlist;
[value,number]=max(ctlist);
我只是想知道在R中有没有像matlab中的telist{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)
}
数组
但是,如果您的所有数据都是以"矩形/立方"方式构建的同一类型,则可以使用多维数组。
> 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
这篇关于如何在R中创建二维表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文