使用ggplot命名绘图,由lapply循环

时间:2012-08-16 21:21:07

标签: r ggplot2

我正在使用ggplot2

创建一个图表列表(lapply

让我说我有这个功能

plot <- function(x){
  ggplot(x,aes(x=timepoints,means)) + 
       geom_point() + 
       geom_line() +
       scale_x_continuous(name='some name') +
       scale_y_continuous(name='another name') +
       geom_errorbar(aes(ymin=means-stderrs,ymax=means+stderrs),width=2) + 
       opts(title = names(x))    
}                 

我将通过数据帧列表循环这里,这是列表中两个数据帧的示例:

$name1

   means    stderrs        timepoints
1  603.784863 289.952382       0
2  120.00     99.000           20
$name2
   means   stderrs
1  17.425819  5.204339         0
2  25.9       8.0              20

我的问题:   我的ggplot函数的names(x)部分将每个绘图命名为'means',而不是该数据框的实际名称(例如name1,name2) 该函数在list[[i]]中,我想要实际数据框的名称,即names(list[i])

问题:    有没有办法引用列表中的外层,可以这么说?或者是否有更简单的方法来获取这些图表的列表与其各自的名称?

1 个答案:

答案 0 :(得分:2)

它不漂亮但它有效。

plot2 <- function(x, title){
  ggplot(x,aes(x=timepoints,means)) + 
      geom_point() + 
      geom_line() +
      scale_x_continuous(name='some name') +
      scale_y_continuous(name='another name') +
      geom_errorbar(aes(ymin=means-stderrs,ymax=means+stderrs),width=2) + 
      opts(title = title)
}

lapply(names(your_list), function(x) plot2(your_list[[x]], x))