循环中

时间:2017-09-08 10:48:38

标签: r loops ggplot2 multiple-columns boxplot

我想制作以下的箱形图:

示例数据:

> head(df2)
             Results Capacity Power  LDI  LDE      LB  PDC   D  1  2  3  4  5  6  7  8  9
1 ImpactDCNoV2GYesDC       1  PG11 LDI6 LDE0 LB0.045 PDC0    D10 1  NA NA NA NA NA NA NA NA
2 ImpactDCNoV2GYesDC    0.95  PG11 LDI5 LDE0 LB0.045 PDC0.25 D10 2  2 6 7 9 NA NA NA NA
3 ImpactDCNoV2GYesDC     0.9  PG11 LDI1 LDE0 LB0.045 PDC0.50 D10 5 3 NA NA NA NA NA NA NA
4 ImpactDCNoV2GYesDC    0.85  PG11 LDI6 LDE0 LB0.045 PDC0.75 D10 8 6 NA 8 NA NA NA NA NA
5 ImpactDCNoV2GYesDC     0.8  PG11 LDI5 LDE0 LB0.045 PDC0    D10 6 NA NA NA NA NA NA NA NA
6 ImpactDCNoV2GYesDC    0.75  PG22 LDI1 LDE0 LB0.045 PDC0 D10 2 NA NA 1 NA NA NA NA NA

我有一个大型数据集,所以我决定循环几个图,以获得不同的PG值。我也使用facet_wrap来绘制不同PDC值的绘图结果。

作为输出,我想获得第1列到第9列中数据的箱线图,其中箱线图x轴是PDC的不同值。轴是1到9列中给出的值。

我为此准备的代码是:

Box.graph <- function(df2, na.rm = TRUE, ...){
  Powerlist <- unique(df2$Power) 
  for (i in seq_along(Powerlist)){
    boxplot <- 
      ggplot(subset(df2, df2$Power==Powerlist[i]),
             aes(x =LDI, y = value, colour = variable), group = df2$Power) +
      geom_boxplot() +
      theme(axis.text.x = element_text(size=14))+
      facet_wrap( ~ PDC, ncol =1)+ 
      theme(legend.position = "none")+
      scale_y_continuous("LDI")+
      scale_x_continuous("Time")+
      ggtitle(paste(Powerlist[i], ' Time \n', 
                    "LDI \n",
                    sep=''))
    #save plot as PNG 
    ggsave(plot = last_plot(), file= paste(StoreResults, '/Results/',
                                           Powerlist[i], "TEST.png", sep=''), scale=2)
    print(boxplot)
  }
}
#Run the function  
Box.graph(df)

但返回的错误是:

 Error in eval(expr, envir, enclos) : object 'value' not found 

我认为问题在于我不知道如何告诉R用不同的容量值绘制第1-9列的值。

有人可以帮忙吗?

0 个答案:

没有答案