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,我们还有两个列表charlie和delta:
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)
任何帮助将非常感激。谢谢你!
您可以在索引序列上使用 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)