互動式文檔簡介

互動式文檔是製作Shiny apps 的新方式。互動式文檔是一種包含Shiny控制項和輸出的R markdown文件,可以在markdown中編寫報告,然後,可以像app按鈕一下啟動它。

R Markdown

R Markdown簡介, 已經講述過R Markdown使用方法,優點如下:

  • 可以嵌入R代碼,節省人力,可以復用。
  • 可以隨意將R Markdown文件轉化為 HTML, PDF, and Word 文檔
  • 可以將便捷的將R Markdown轉化為幻燈片

R Markdown定位是專業的報告工具,

本文繼續介紹 R Markdown的功能:嵌入Shiny元素R Markdown文件中,創建一個能夠交互的報告或幻燈皮。

報告居然能完成Shiny app的功能。事實上R Markdown提供構建輕量級的Shiny app的途徑,下文將具體講如何快捷的完成絢麗的功能,感謝RStudio。

互動式文檔

製作R Markdown互動式文檔需要以下兩步:

  1. add runtime: shiny 加入 YAML header.
  2. add Shiny控制項和渲染R代碼

rmarkdown 包將編譯文檔到反饋式Shiny app中,看起來和一般的文檔無異,但是,裡面卻包含了反饋式組件。

runtime: shiny

在YMAL header中加入runtime: shiny參數,保存文件後,在RStudio改變 「Knit」 控制項變成「Run Document」 控制項。

「Run Document」 意味著將 rmarkdown 文件將不在是靜態的,死板的文件,而是一個能夠交互的 Shiny app.

因為是Shiny app, 所以,文件格式必須是HTML,最後的保存文件是 html_document 或者ioslides_presentation 。

控制項

在文件中添加控制項,吊起Shiny控制項任務當時是用R代碼完成, R Markdown將空間作為最後的輸出。

嘗試兩個控制項:

---nruntime: shinynoutput: html_documentn---nn### Here are two Shiny widgetsnn```{r echo = FALSE}nselectInput("n_breaks", label = "Number of bins:",n choices = c(10, 20, 35, 50), selected = 20)n nsliderInput("bw_adjust", label = "Bandwidth adjustment:",n min = 0.2, max = 2, value = 1, step = 0.2)n```n

渲染輸出

為了增加反饋輸出在文檔中,用一下代碼來吊起相應類型的控制項。

render functioncreatesrenderImage圖片renderPlot圖像renderPrint列印輸出renderTable數據框,矩陣,表格renderText字元串renderUIShiny

R Markdown 的渲染輸出與其他R代碼輸出的結果在一起。

輸出的結果與 Shiny app相同,如果控制項值和反饋表達式變更,輸出也做出相應變化。

看如下案例:

---nruntime: shinynoutput: html_documentn---nn### Here are two Shiny widgetsnn```{r echo = FALSE}nselectInput("n_breaks", label = "Number of bins:",n choices = c(10, 20, 35, 50), selected = 20)n nsliderInput("bw_adjust", label = "Bandwidth adjustment:",n min = 0.2, max = 2, value = 1, step = 0.2)n```nn### ...that build a histogram.nn```{r echo = FALSE}nrenderPlot({n hist(faithful$eruptions, probability = TRUE, n breaks = as.numeric(input$n_breaks),n xlab = "Duration (minutes)", n main = "Geyser eruption duration")n n dens <- density(faithful$eruptions, adjust = input$bw_adjust)n lines(dens, col = "blue")n})n```n

點擊「Run Document.」

互動式文檔的具體結構:

rmarkdown 會提取R代碼到偽造 server.R文件,R Markdown將html文件轉化成 index.html進行展示。

R Markdown提供UI,所以,不必寫UI,哈哈

分享文件

互動式文檔其實是一種Shiny app,以為這你可以將文檔分享給其他人。

  1. Email .Rmd 文件,但必須要用RStudio運行
  2. Shiny Server or Shiny Server Pro 進行分享,首先你的有伺服器!
  3. 最簡單的 ShinyApps.io

但是不能單個HTML文件進行分享,遺憾!

討論

  • The R Markdown 工作流非常方便.

  • 可以製作幻燈片,這是shiny是很難完成的

  • 互動式報告非常有利於展示,復用率高

推薦閱讀:

乾貨教程|可能是最方便好用的文字雲工具
什麼水平?使用 R 語言從拉勾網看數據挖掘崗位現狀
PDNS數據驅動DGA分析
數據挖掘|K-means聚類
巡洋艦AI時代招你遠征

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