Che*_*eng 3 matlab r list cell transfer
我想转matlab code成R,ctlist是一个向量,matlab code如下:
telist{i,j}=ctlist;
[value,number]=max(ctlist);
Run Code Online (Sandbox Code Playgroud)
我只是想知道R中是否有“数据结构”,就像matlab中的telist{i,j}
您可以拥有无限嵌套的列表:
list1 <- list()
list1[[1]] <- list()
list[[1]][[1]] <- list()
Run Code Online (Sandbox Code Playgroud)
等等...
但举一个更实际的例子,假设您想要 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()
Run Code Online (Sandbox Code Playgroud)
是否有特定的语法可以立即创建这些列表结构?
根据理查德·斯克里文的评论,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)
Run Code Online (Sandbox Code Playgroud)
真的没有任何限制。
动态扩展列表
您还可以动态地将元素添加到列表中,例如在循环中:
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)
}
Run Code Online (Sandbox Code Playgroud)
数组
但是,如果您的所有数据都是以“矩形/立方”方式构造的相同类型,则可以使用多维数组。
> 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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6110 次 |
| 最近记录: |