<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          用rmarkdown定制你的數(shù)據(jù)分析報(bào)告

          共 2118字,需瀏覽 5分鐘

           ·

          2020-09-04 21:22

          生物信息學(xué)習(xí)的正確姿勢(shì)

          NGS系列文章包括NGS基礎(chǔ)、在線繪圖、轉(zhuǎn)錄組分析?Nature重磅綜述|關(guān)于RNA-seq你想知道的全在這、ChIP-seq分析?ChIP-seq基本分析流程、單細(xì)胞測(cè)序分析?(重磅綜述:三萬字長(zhǎng)文讀懂單細(xì)胞RNA測(cè)序分析的最佳實(shí)踐教程)、DNA甲基化分析、重測(cè)序分析、GEO數(shù)據(jù)挖掘典型醫(yī)學(xué)設(shè)計(jì)實(shí)驗(yàn)GEO數(shù)據(jù)分析 (step-by-step)批次效應(yīng)處理等內(nèi)容。

          1、rmarkdown簡(jiǎn)介

          markdown是一種輕量級(jí)標(biāo)記語言,它允許使用者可以通過簡(jiǎn)單的文本格式 編寫文檔,并且轉(zhuǎn)換成html文檔。markdown因?yàn)檎Z法簡(jiǎn)單、上手容易,現(xiàn)在也越來越多的被文檔編輯人員使用。有很多可以支持markdown編輯的應(yīng)用軟件,例如Mou、MarkdownEditor、Haroopad、Typora等,通過這些工具可以便捷的完成markdown文字錄入,并且支持導(dǎo)出PDF、HTML等格式。?

          rmarkdown是R語言環(huán)境中提供的markdown編輯工具,運(yùn)用rmarkdown撰寫文章,既可以像一般的markdown編輯器一樣編輯文本,也可以在rmarkdown中插入代碼塊,并將代碼運(yùn)行結(jié)果輸出在markdown里。對(duì)于專注于用R語言寫報(bào)告的數(shù)據(jù)分析師來說,rmarkdown既提高了數(shù)據(jù)分析工作的便捷性,也提高了數(shù)據(jù)分析報(bào)告的復(fù)用性。?

          2、rmarkdown的輸出展示

          2.1新建一個(gè)markdown項(xiàng)目

          點(diǎn)擊Rstudio左上角的新建項(xiàng)目,選擇Rmarkdown文件格式,即可建立一個(gè)rmarkdown編輯文件 。在彈出的選項(xiàng)框里,可以申明rmarkdown的Title、Author以及默認(rèn)的輸出文件格式,一般可以選擇HTML、PDF、Word格式,具體見下圖。?
          markdown的結(jié)構(gòu)
          在新建的markdown文件里,主要包含三塊內(nèi)容:1.YAML、2.markdown文本、3.代碼塊。?
          1)YAML
          YAML是Rmarkdown的頭部文件(上圖1位置),YAML定義了rmarkdwon的性質(zhì),比如title、author、date、指定output文件類型等。?
          2)markdown文本
          markdown文本是rmarkdown里的主要內(nèi)容(上圖3位置),由編輯人員按照markdown語法自行編寫文本內(nèi)容,?
          3)代碼塊
          rmarkdown的一個(gè)主要功能是可以執(zhí)行文件內(nèi)的代碼塊(上圖2位置),并將代碼執(zhí)行結(jié)果展示在markdown里。這對(duì)撰寫數(shù)據(jù)分析報(bào)告帶來了極大的便利。?
          R代碼塊一般通過```{R}```來插入,另外{}內(nèi)還可以定義參數(shù)來控制代碼塊運(yùn)行結(jié)果的輸出格式。一般包括代碼及運(yùn)行結(jié)果的輸出、圖片表格格式定義等。代碼塊參數(shù)主要包括如下幾類:?
          • eval
            eval控制了代碼塊是否執(zhí)行。若設(shè)定為eval=TRUE,則markdown會(huì)執(zhí)行代碼塊里的代碼;若eval=FALSE,則markdown不會(huì)執(zhí)行代碼。?
          • echo
            echo參數(shù)控制了markdown是否顯示代碼塊。若echo=TRUE,則表示代碼塊顯示在markdown文檔顯示代碼塊;反之,代碼塊不出現(xiàn)在輸出結(jié)果中。?
          • collapse
            collapse設(shè)置為TRUE或者FALSE.用來控制文本輸出結(jié)果是否和代碼塊混在一起。?
          • fig.show :設(shè)置了圖片輸出方式?
            • fig.show=‘a(chǎn)sis’:表示plot在產(chǎn)生他們的代碼后面
            • fig.show=‘hold’:所有代碼產(chǎn)生的圖片都放在一個(gè)完整的代碼塊之后
            • fig.show=‘a(chǎn)nimate’:表示將所有生成的圖片合成一個(gè)動(dòng)畫圖片
            • fig.show=‘hide’:表示產(chǎn)生所有圖片,但是并不展示
          • fig.width:設(shè)置圖片輸出的寬度?
          • fig.height:設(shè)置圖片輸出的高度?
          • fig.align
            設(shè)置圖片位置排版格式,默認(rèn)為left,可以為right或者center?
          • fig.cap :設(shè)置圖片的標(biāo)題
          • fig.subcap:設(shè)置圖片的副標(biāo)題?
          若markdown內(nèi)的代碼塊存在一樣的參數(shù)設(shè)置,則可以提前設(shè)計(jì)好全局的代碼塊參數(shù)。全局代碼塊通過knitr::opts_chunk$set函數(shù)進(jìn)行設(shè)置,一般設(shè)置在YAML文件下方,具體見下圖。?

          2.2markdown的圖表輸出

          rmarkdown生成的表格,可以通過knitr包的kable()函數(shù)進(jìn)行輸出。以datasets包的rock數(shù)據(jù)集為例,在rmarkdown中輸出rock數(shù)據(jù)集的表格(見下圖)。?
          knitr::kable(head(rock), caption = 'rock數(shù)據(jù)',align='c')
          除了用knitr::kable()輸出表格,還可以kableExtra、huxtable等擴(kuò)展包來美化表格。本文以kableExtra包為例,大致介紹rmarkdown中渲染表格的相關(guān)函數(shù)。?
          設(shè)置表格的寬度
          x_html <- knitr:: kable(head(rock), "html")
          kableExtra::kable_styling(x_html,bootstrap_options = "striped",
          full_width = F)
          設(shè)置表格的對(duì)齊方式
          x_html <- knitr:: kable(head(rock), "html")
          kableExtra::kable_styling(x_html,bootstrap_options = "striped",
          full_width = F,
          position = "left")
          設(shè)置表格的字體大小
          x_html <- knitr:: kable(head(rock), "html")
          kableExtra::kable_styling(x_html,bootstrap_options = "striped",
          full_width = T,
          font_size = 20
          設(shè)置表格的行與列
          x_html <- knitr:: kable(head(rock), "html")
          x_html <- kableExtra::kable_styling(x_html,
          bootstrap_options = "striped",
          full_width = T)
          kableExtra::column_spec(x_html,1:2,
          bold = T,
          color = "white",
          background = "#D7261E")
          x_html <- knitr:: kable(head(rock), "html")
          x_html <- kableExtra::kable_styling(x_html,
          bootstrap_options = "striped",
          full_width = T)
          kableExtra::row_spec(x_html,1:2,
          bold = T,
          color = "white",
          background = "#D7261E")
          其它表格渲染
          library(kableExtra)
          data = plyr::mutate(rock[1:10, ],
          perm = cell_spec(perm,"html",
          color = "white",
          bold = T,
          background = spec_color(1:10,
          end = 0.9,
          option = "A",
          direction = -1)),
          shape = ifelse(shape > 0.15,
          cell_spec(shape,
          "html",
          color = "white",
          background = "#D7261E",
          bold = T),
          cell_spec(shape, "html",
          color = "green",
          bold = T)))
          x_html <-knitr::kable(data,"html", escape = F, align = "c")
          x_html <-row_spec(x_html,0, color = "white", background = "#696969" )
          kable_styling(x_html,"striped")

          2.3markdown的主題格式

          Rmarkdowm作為可復(fù)用報(bào)告的優(yōu)秀工具,除了提供文檔編輯、圖表輸出外,還有許多主題格式供使用者選擇。除了默認(rèn)的主題外,還可以通過加載prettydoc、rmdformats、tufte等包獲取更多主題格式。下面我們看看幾類擴(kuò)展包里的主題樣式。?
          rmdformats包
          ---
          title: "建立你的markdown項(xiàng)目"
          author: "R友舍"
          date: "2020/9/1"
          output:
          rmdformats::readthedown:
          self_contained: true
          thumbnails: true
          lightbox: true
          gallery: false
          highlight: tango
          ---
          prettydoc包
          ---
          title: "建立你的markdown項(xiàng)目"
          author: "R友舍"
          date: "2020/9/1"
          output:
          prettydoc::html_pretty:
          theme: cayman
          highlight: github
          ---
          tufte包
          ---
          title: "建立你的markdown項(xiàng)目"
          author: "R友舍"
          date: "2020/9/1"
          output:
          tufte::tufte_html: default
          ---
          cerulean
          ---
          title: "建立你的markdown項(xiàng)目"
          author: "R友舍"
          date: "2020/9/1"
          output:
          html_document:
          theme: cerulean
          highlight: tango
          ---

          2.4markdown的導(dǎo)出

          rmarkdown的導(dǎo)出方法有兩種,一種是依靠Rstudio手動(dòng)導(dǎo)出,另一種是基于命令行的導(dǎo)出方式。?
          手動(dòng)導(dǎo)出
          手動(dòng)導(dǎo)出方法很簡(jiǎn)單,在完成mardown編輯后,手動(dòng)點(diǎn)擊上圖紅圈內(nèi)knit按鈕,選擇導(dǎo)出格式類型即可,Rstudio支持導(dǎo)出PDF、html、word三種類型。?
          命令行導(dǎo)出
          命令行導(dǎo)出主要依靠rmarkdown::render實(shí)現(xiàn),render函數(shù)主要包含如下幾個(gè)參數(shù):?
          • input
            指定需要導(dǎo)出的rmarkdwon文件地址
          • output_format
            指定需要導(dǎo)出的文件類型,同樣支持pdf、word、html等多種文件格式。若未指定output_format格式,則輸出rmarkdown文件中output指定的格式類型。

          3、生成可重復(fù)性報(bào)告

          使用rmarkdown最大的便捷是可以作為可重復(fù)性報(bào)告模版,提高數(shù)據(jù)分析報(bào)告制作效率。使用人員可以提前制作好數(shù)據(jù)分析模版,對(duì)于同類數(shù)據(jù)分析問題,只需要自動(dòng)切換數(shù)據(jù)來源,即可自動(dòng)生成分析報(bào)告,極大的提高了數(shù)據(jù)分析人員的分析效率。?
          這里我們以datasets包為例,制作一個(gè)數(shù)據(jù)集的數(shù)據(jù)概覽報(bào)告,并將該報(bào)告作為模版,對(duì)datasets包內(nèi)指定數(shù)據(jù)集批量輸出分析報(bào)告。?
          在制作可重復(fù)性報(bào)告前,首先需要建立分析模版,然后再通過自動(dòng)加載數(shù)據(jù)的方式,自動(dòng)化產(chǎn)出分析報(bào)告。首先我們先建立一份模版文件?
          在建立好一份分析模版后,還有兩個(gè)問題需要解決:1:如何動(dòng)態(tài)的將數(shù)據(jù)集傳入到rmarkdown中,從而實(shí)現(xiàn)復(fù)用報(bào)告模版的效果;2:如何批量生成報(bào)告并導(dǎo)出。?
          要解決第一個(gè)問題,需要引用YAML里的params參數(shù),render函數(shù)可以通過修改params參數(shù),將數(shù)據(jù)傳入rmarkdown中,從而實(shí)現(xiàn)動(dòng)態(tài)調(diào)整rmarkdown里的數(shù)據(jù)。?
          如上圖所示,先在YAML中設(shè)置好自定義參數(shù)名稱name,然后再通過render函數(shù)將name值傳入到markdown中,并通過params$name實(shí)現(xiàn)對(duì)數(shù)據(jù)集名稱的調(diào)用。?
          name <-"airquality"
          render("用rmarkdown定制你的數(shù)據(jù)分析報(bào)告/可重復(fù)分析報(bào)告/模版.Rmd",
          params = list(name=name),
          output_file = paste0(name,'數(shù)據(jù)集概覽'),
          )
          關(guān)于第二個(gè)問題,當(dāng)設(shè)置好分析模版及依賴的參數(shù)后,只需要在rander函數(shù)外面循環(huán)傳入?yún)?shù)即可,并將不通報(bào)告導(dǎo)出到指定文件夾內(nèi)即可。?
          當(dāng)我們要同時(shí)生成datasets數(shù)據(jù)集內(nèi)airquality,mtcars,LifeCycleSavings三個(gè)數(shù)據(jù)集的分析報(bào)告時(shí):?
          library(datasets)
          name_list <-c("airquality","mtcars","LifeCycleSavings")
          for(name in name_list){
          render("用rmarkdown定制你的數(shù)據(jù)分析報(bào)告/可重復(fù)分析報(bào)告/模版.Rmd",
          params = list(name=name),
          output_file = paste0(name,'數(shù)據(jù)集概覽'),
          )
          }
          最終在目標(biāo)路徑下,即可看到已生成的三分報(bào)告,這樣就實(shí)現(xiàn)了rmarkdown的重復(fù)性報(bào)告了。?

          往期精品(點(diǎn)擊圖片直達(dá)文字對(duì)應(yīng)教程)


          后臺(tái)回復(fù)“生信寶典福利第一波”或點(diǎn)擊閱讀原文獲取教程合集


          瀏覽 100
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  亚洲成A人片777777久久 | 亚洲av性| 欧美成人在线网址 | 国产欧美精品久久久久 | 国产午夜精品一区二区三区视频 |