R Markdown 簡介

互動式文檔是一種創建Shiny apps的新途徑。互動式文檔是一種包含Shiny控制項與輸出的 R Markdown文件, 你可以再 markdown中寫報告,並且作為app來啟動它。

本文主要闡述如何使用R Markdown寫報告。

與本文配套的文獻 Introduction to interactive documents, 將像你展示如何通過將R Markdown 報告轉變成為帶有Shiny組件的互動式文檔。

R Markdown

R Markdown是通過R語言製作動態文檔的文件格式。R Markdown文檔再markdown中完成,其中包含嵌入的R代碼,如下圖:

---title: R Markdownoutput: html_document---This is an R Markdown document. Markdown is a simple formatting syntax which allows you to author HTML, PDF, and MS Word documents. For more details on how to use R Markdown, see <http://rmarkdown.rstudio.com>.When you click the **Knit** button a document will be generated that includes both content as well as the output of any embedded R code chunks within the document. You can embed an R code chunk like this:```{r}summary(cars)```You can also embed plots:```{r, echo=FALSE}plot(cars)```Note that the `echo = FALSE` parameter was added to the code chunk to prevent printing of the R code that generated the plot.

R Markdown文檔編輯需要 rmarkdown包,rmarkdown安裝需要RStudio編輯器環境,但是你可以以github途徑來下載rmarkdown,並安裝。

devtools:install_github("rmarkdown", "rstudio")

R Markdown是資源代碼豐富並高可用的文件,你可以將通過一下兩種方式改變R Markdown文件格式。

  1. knit - knit 文件. rmarkdown包調用knitr包, knitr 將運行所有的R代碼,並將得到的結果追加到代碼之後,這種工作方式非常節省實踐並且報告也可復用。

    傳統的,作者製作包含圖形的報告。作者需要製作圖形,保存為文件,然後copy並粘貼到最終的報告中,這個工作嚴重依賴人力,如果數據有變更,那麼作者需要重複整個過程來更新圖形。

    現在,再R Markdown的模板中,每個報告都包含製作圖形,表格,數字所需的代碼,作者可通過knit來自動完成更新。

  2. convert - convert 文件。rmarkdown包藉助pandoc來將文件轉變成新的格式,例如,你可以轉變Rmd文件成HTML, PDF, 或Microsoft Word文件,你甚至可以轉變成 HTML5 或 PDF 幻燈片,rmarkdown保持文本,代碼結果與Rmd文件中的結構一致。

    這些轉變能力能讓你markdown編輯,並方便的改變格式,你可以將R代碼放入knit,並以任何一種格式分享個其他人。

在實際應用中,作者經常同時用knit 和 convert文檔。在本文,將用render 命令來對R markdwon文件執行 knitting 和 converting過程。

你可以認為的用render作用到R Markdown 文件, 如: rmarkdown::render(). 上面的代碼渲染成HTML文件格式之後的結果如下圖。

rmarkdown::render(),R markdown與RStudio深度合作 integrated into the RStudio IDE,因為,你可以通過按鍵來完成以上命令。

開車了!

為了創建 R Markdown報告,打開text文件,並將它保存為.Rmd 文件。File > New File > Text File

確保保存成 .Rmd文件, RStudio IDE能夠很大程度上幫助你完成整個任務.,你可以保存通過File > Save。修改擴展名。

R Markdown 報告由一下3部分組成:

  1. text文本
  2. knitr 處理 R code
  3. YAML的渲染參數

本文將逐一介紹:

處理文本

.Rmd 文件包含text,Markdown是一種處理普通格式文本的公約,包括一下特徵:

  • 加粗和斜體文本
  • 列表
  • title
  • 超鏈接
  • 更多

這個協議雖然很樸素,但是,製作的文本非常易讀,對下文文本採用了了本協議,請看

# Say Hello to markdownMarkdown is an **easy to use** format for writing reports. It resembles what you naturally write every time you compose an email. In fact, you may have already used markdown *without realizing it*. These websites all rely on markdown formatting* [Github](www.github.com)* [StackOverflow](www.stackoverflow.com)* [Reddit](www.reddit.com)

編寫過程中展示了如何使用 markdown:

  1. headers - 使用一個或者多個 # 在文本的開始階段,例如: # Say Hello to markdown. 單個#意味著文本是一級標題,兩個#代表二級標題,以此類推.

  2. 斜體和加粗字體 - 對文本兩側加一個星號得到斜體字體,例如上文中:*without realizing it*. 用雙星號包圍文本得到加粗字體, 例如:**easy to use**.

  3. lists - 每個要點之前用星號,正文與要點之間留空行

    This is a list * item 1 * item 2 * item 3

    This is a list

    • item 1
    • item 2
    • item 3
  4. hyperlinks - 1.用中括弧包圍網站名稱,2.用括弧包圍具體鏈接,然後連接在一起使用,例如:[Github](Build software better, together).

    你可以查看更多的Mardown 操作指導:Markdown Quick Reference guide

    1.open a .md or .Rmd file in RStudio.

    2.打開?

    3.選擇 「Markdown Quick Reference」

    4.在幫助面板即可查看

渲染

為了將markdown文件轉化為HTML, PDF, 或 Word document,單機編輯面板的工具「Knit」 控制項,出現下拉菜單,選擇你要的轉化文件類型。

當你選定格式後, rmarkdown 將把你的文本轉化成新格式文件。rmarkdown能夠採用markdown語法的文件變更格式。

一旦文件被渲染,RStudio將預覽目標格式結果,並保存在工作目錄中。

下圖展示了3種最終格式的預覽圖:

Note: RStudio不能直接轉化PDF和word,需要裝其他軟體。

knitr嵌入R代碼

knitr包 能夠兼容markdown語法,尤其包含執行R代碼的能力。

渲染報告的過程中, knitr 將執行代碼並將輸出的結果展示。可以選擇性的展示:之展示代碼,只展示結果,代碼與結果同時展示。

想嵌入R代碼在報告中,用兩行```將代碼包圍,在第一個``` {r}, 用於通知knitr下面的將是R代碼,具體模板如下圖:

Here"s some code```{r}dim(iris)```

在渲染文檔的時候, knitr將運行代碼並將結果追加在代碼之後,knitr提供格式和語法高亮展示R代碼和代碼運行結果。

作為上面R代碼的markdown結果:

如果不想將結果results 追加到報告中,可以將eval = FALSE 參數加入大括弧中,這樣做的結果就是只把代碼放入報告中,而不執行。

只將結果放入報告中,參數echo = FALSE 而不顯示代碼:

echo = FALSE同樣實用於作圖:

參數echo 和 eval不僅僅用於自定義code, 你可以通過 rmarkdown 和 knitr 進行學習。

行間代碼

嵌入R代碼到文本當中,在代碼的兩側用點』來包圍,如下圖:

Two plus two equals `r 2 + 2`.

knitr 將用代碼結果代替R代碼,如下圖所示:

YAML 渲染參數

YAML header將決定如何展現你的 .Rmd file.文件,用兩個 --- 包圍,如下圖:

---title: "Untitled"author: "Garrett"date: "July 10, 2014"output: html_document---Some inline R code, `r 2 + 2`.

output: 決定最後的文件類型。

output: 選擇其中一種類型的文件類型

  • html_document,
  • pdf_document,
  • word_document,

RStudio IDE knit更加方便的進行設置。

幻燈片:

可以將文檔轉換為幻燈片:

  • 參數設定output: ioslides_presentation 創建ioslides (HTML5)幻燈片
  • 參數設定output: beamer_presentation 創建 a beamer (PDF) 幻燈片

Note: 默認情況下RStudio編輯器中knitr沒有默認選項,先在命令中修改輸出類型,RStudio會輸出類型加入默認選項菜單。

具體參數詳見rmakdown.rstudio.com

總結

R Markdown 提供快速,可復用的報告方式,可以在markdwon中編寫報告,並用knitr嵌入代碼,可以隨時更新代碼,最終的文檔可以轉變成任何文件類型,

Introduction to interactive documents, 將教你如何將shiny的互動元素加入到markdown中。

推薦閱讀:

【乾貨收藏】Python面試指南大全
《利用數據改進醫療質量指南》
若當時你也在泰坦尼克號上,能否活下來嗎?
知乎探索(二)——封禁用戶是誰?

TAG:R编程语言 | 数据分析 | 数据挖掘 |