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文件格式。
knit - knit 文件. rmarkdown包調用knitr包, knitr 將運行所有的R代碼,並將得到的結果追加到代碼之後,這種工作方式非常節省實踐並且報告也可復用。
傳統的,作者製作包含圖形的報告。作者需要製作圖形,保存為文件,然後copy並粘貼到最終的報告中,這個工作嚴重依賴人力,如果數據有變更,那麼作者需要重複整個過程來更新圖形。
現在,再R Markdown的模板中,每個報告都包含製作圖形,表格,數字所需的代碼,作者可通過knit來自動完成更新。
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部分組成:
- text文本
- knitr 處理 R code
- 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:
headers - 使用一個或者多個 # 在文本的開始階段,例如: # Say Hello to markdown. 單個#意味著文本是一級標題,兩個#代表二級標題,以此類推.
斜體和加粗字體 - 對文本兩側加一個星號得到斜體字體,例如上文中:*without realizing it*. 用雙星號包圍文本得到加粗字體, 例如:**easy to use**.
lists - 每個要點之前用星號,正文與要點之間留空行
This is a list * item 1 * item 2 * item 3
This is a list
- item 1
- item 2
- item 3
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面試指南大全
※《利用數據改進醫療質量指南》
※若當時你也在泰坦尼克號上,能否活下來嗎?
※知乎探索(二)——封禁用戶是誰?