遍历地块列表

问题描述 投票:0回答:1

我有四个地块列表(每个列表有 8 个地块),其中这些列表已被编译为一个列表。 所以,基本上; 4 个列表的列表,其中每个子列表有 8 个图。

现在,我需要 8 个列表作为结果;其中 4 个列表中每个列表的第一个元素作为单独的列表生成。

任何人都可以帮助我如何使用“lapply”或“for loop”来获得所需的结果?

我尝试了以下块,但没有输出 [ABC -> "NULL"].

PlotsA <- list(Plot1.png, Plot2.png,..., Plot8.png)
PlotsB <- list(Plot9.png, Plot10.png,..., Plot16.png) 
PlotsC <- list(Plot17.png, Plot18.png,..., Plot24.png)
PlotsD <- list(Plot25.png, Plot26.png,..., Plot32.png)

All_Plots <- list(PlotsA, PlotsB, PlotsC, PlotsD)
 
ABC <- for (i in seq_along(All_Plots)){
  for (j in length(All_Plots[[i]])){
    x = list(All_Plots[[i]][j])
    x 
  }
}
ABC

我要的结果是...

Outcome1
[1]
Plot1.png, Plot9.png, Plot17.png, Plot25.png
Outcome2
[2]
Plot2.png, Plot10.png, Plot18.png, Plot26.png
...

等等。

进一步处理包括 4 个图的网格(例如,Plot1.png、Plot9.png、Plot17.png 和 Plot25.png)。一旦我得到上述结果,我就可以做到这一点。

r ggplot2 gridextra
1个回答
0
投票

使用

purrr::transpose()
。 (出于演示目的,我使用字符串作为替代品,但与实际情节一样有效。)

library(purrr)

transpose(All_Plots)

[[1]]
[[1]][[1]]
[1] "Plot1.png"

[[1]][[2]]
[1] "Plot9.png"

[[1]][[3]]
[1] "Plot17.png"

[[1]][[4]]
[1] "Plot25.png"


[[2]]
[[2]][[1]]
[1] "Plot2.png"

[[2]][[2]]
[1] "Plot10.png"

[[2]][[3]]
[1] "Plot18.png"

[[2]][[4]]
[1] "Plot26.png"


# ... 

[[8]]
[[8]][[1]]
[1] "Plot8.png"

[[8]][[2]]
[1] "Plot16.png"

[[8]][[3]]
[1] "Plot24.png"

[[8]][[4]]
[1] "Plot32.png"
© www.soinside.com 2019 - 2024. All rights reserved.