创建 table 个结果并绘制直方图

Create table of results and plot histogram

我经过计算得到了这些结果。

results<-structure(list(`1-2006` = structure(list(a = 2.569609631261, 
    l = 1.07133133970952, v = 0.0717722617877896, k = 0.942672861627156, 
    f = 0.388933771611416, mx = 13.5026751665079), .Names = c("a", 
"l", "v", "k", "f", "mx")), `1-2007` = structure(list(a = 12.1740785313206, 
    l = 0.253071159621183, v = 0.00109045670813382, k = 12.1383424353805, 
    f = 0.382836164409956, mx = 371.57077346378), .Names = c("a", 
"l", "v", "k", "f", "mx")), `1-2008` = structure(list(a = 7.61500330474582, 
    l = 0.480886095894786, v = 0.0169270813765404, k = 2.44342267614725, 
    f = 0.079954717880489, mx = 22.1891386586908), .Names = c("a", 
"l", "v", "k", "f", "mx"))), .Names = c("1-2006", "1-2007", "1-2008"
))

我需要两次操作才能得到结果;

1) 我在导出的 excel 文件

中需要这样的 table

2) 所有 a、l、v、k、f 和 mx 值的直方图。一个图中所有 a 个值,一个图中所有 l 个值等。

要从列表中创建 table,您可以使用 do.call():

df <- do.call(rbind.data.frame, results)
# 
               a         l           v          k          f        mx
1-2006  2.569610 1.0713313 0.071772262  0.9426729 0.38893377  13.50268
1-2007 12.174079 0.2530712 0.001090457 12.1383424 0.38283616 371.57077
1-2008  7.615003 0.4808861 0.016927081  2.4434227 0.07995472  22.18914

然后可以使用 ggplot2 函数获得直方图 geom_histogram():

#example for the first column
library(ggplot2)
ggplot(df, aes(x=a)) + geom_histogram()

您还可以使用 openxlsx 包将 table 保存在 excel 工作簿中,使用不同的样式如下。

list.results <-list(                                   
    `1-2006` = list(                                   
    ¦   a = 2.569609631261,                            
    ¦   l = 1.07133133970952,                          
    ¦   v = 0.0717722617877896,                        
    ¦   k = 0.942672861627156,                         
    ¦   f = 0.388933771611416,                         
    ¦   mx = 13.5026751665079                          
    ),                                                 
    `1-2007` = list(                                   
    ¦   a = 12.1740785313206,                          
    ¦   l = 0.253071159621183,                         
    ¦   v = 0.00109045670813382,                       
    ¦   k = 12.1383424353805,                          
    ¦   f = 0.382836164409956,                         
    ¦   mx = 371.57077346378                           
    ),                                                 
    `1-2008` = list(                                   
    ¦   a = 7.61500330474582,                          
    ¦   l = 0.480886095894786,                         
    ¦   v = 0.0169270813765404,                        
    ¦   k = 2.44342267614725,                          
    ¦   f = 0.079954717880489,                         
    ¦   mx = 22.1891386586908                          
    )                                                  
)                                                      

## Transform list of list to matrix                    
matrix.results <- do.call(rbind, results)              

## Options for default styling (These are the defaults)
options("openxlsx.borderColour" = "black")             
options("openxlsx.borderStyle" = "thin")               
## Change the default border colour to #4F81BD         
options("openxlsx.borderColour" = "#4F81BD")           

#######################################################
## Create Workbook object and add worksheets           
wb <- createWorkbook()                                 

## Add worksheets                                      
addWorksheet(wb, "results")                            
x <- matrix.results                                    

#######################################################
## No bordering          

writeData(wb, "results", x, startCol = 2, startRow = 3, colNames = TRUE, rowNames = TRUE)

#######################################################    
## Header Styles                                                                         

hs1 <- createStyle(fgFill = "#DCE6F1", halign = "CENTER", textDecoration = "italic",     
    ¦   ¦   ¦   ¦  border = "Bottom")                                                    

writeData(wb, "results", x, startCol=2, startRow = 8, colNames = TRUE, rowNames = TRUE,  
    ¦   ¦ borders="rows", headerStyle = hs1, borderStyle = "dashed")                     

#######################################################    
## Save workbook                                                                         

saveWorkbook(wb, paste(outDir, "results.xlsx", sep = "/"), overwrite = TRUE)