R - 基于嵌套列表的标题图

jsl*_*che 3 r list nested-lists

我有 2 个列表,每个列表中还有两个包含数据框的列表(换句话说,嵌套列表)。我想绘制每个数据框并根据主列表和嵌套列表的名称为其添加标题。

例如,假设我们有:

a=list(
  list(a=data.frame(x=rpois(5,1),y=rpois(5,1)),
       b=data.frame(x=rpois(5,1),y=rpois(5,1))),
  list(c=data.frame(x=rpois(5,1),y=rpois(5,1)),
       d=data.frame(x=rpois(5,1),y=rpois(5,1))))
Run Code Online (Sandbox Code Playgroud)

我们有主要列表的名称:

names(a)=c("alpha","bravo")
Run Code Online (Sandbox Code Playgroud)

在两个主要列表alpha和中bravo,我们还有两个列表charliedelta

for(i in 1:length(a)) {
  names(a[[i]])=c("charlie","delta") }
Run Code Online (Sandbox Code Playgroud)

我可以用来循环遍历每个列表并绘制数据框,但我无法让标题将每个数据框的主列表(和)和嵌套列表(和)lapply的名称组合起来。例如,在本例中,我想要四个图,分别称为:、、和。alphabravocharliedeltaalpha_charliealpha_deltabravo_charliebravo_delta

lapply(a,function(i) {
  lapply(names(i), function(j) { 
    ggplot()+
      geom_point(data=i[[j]],aes(x,y))+
      opts(title=paste(names(i),j,sep="_")) #Here is where I am struggling!
    } ) } )
Run Code Online (Sandbox Code Playgroud)

任何帮助将非常感激。谢谢你!

Das*_*son 5

您可以在索引序列上使用 lapply 而不是名称本身。

lapply(seq(a), function(i){
    lapply(seq(a[[i]]), function(j){
        ggplot() +
        geom_point(data = a[[i]][[j]], aes(x, y))+
        opts(title = paste(names(a)[i], names(a[[i]])[j], sep = "_"))
        })})
Run Code Online (Sandbox Code Playgroud)