好的,所以我在R上有以下列表:
seg_sites list[1000] List of length 1000
[[1]] double [40x162] 00000000000000000000000...
[[2]] double [40x150] 11110000000000000000000...
[[3]] double [40x160] 00000000111111110000000...
[[4]] double [40x93] 00110000000000111100000...
[[5]] double [40x144] 00000110000000000110000...
...
这个名单还有一千个条目。如您所见,我总是有相同的行数,但每个条目的列数不同。我想要做的是将每个条目提取到一个矩阵。例如,我想创建一个名为" output_1"的矩阵。包含[[1]]条目的信息,然后输出_2与[[2]]条目中的信息,依此类推。
我试图使用for循环:
# Loop to intialize the matrices where I want to store the different entries
for(i in 1:nrep) {
output_single_i <- matrix(data = NA, nrow = 40, ncol = ncol(single[["seg_sites"]][[i]]))
}
# Loop to actually store the different entries in each matrix
for(i in 1:nrep) {
output_single_i <- matrix(single$seg_sites[[i]], ncol = ncol(single[["seg_sites"]][[i]]))
}
这段代码的作用就是将列表中的最后一个条目保存在名为&#34; output_single_i&#34;的矩阵上。但我不知道如何解决它。任何帮助将不胜感激
答案 0 :(得分:2)
我们可以使用assign
从矩阵列表中创建矩阵数据。矩阵数据保存在全局环境中,您可以使用ls()
invisible( lapply(seq_along(mylist), function(x) {
assign( x = paste0("Output", x), value = mylist[[x]], envir = .GlobalEnv )
return(TRUE)
} ))
另一种方法是使用list2env()
函数
names(mylist) <- paste0( 'output', seq_along(mylist))
list2env( mylist, envir = .GlobalEnv)
数据:
mylist <- list(matrix(1:10, ncol = 5), matrix(1:10, ncol = 2))
str(mylist)
# List of 2
# $ : int [1:2, 1:5] 1 2 3 4 5 6 7 8 9 10
# $ : int [1:5, 1:2] 1 2 3 4 5 6 7 8 9 10