互動式文檔簡介
互動式文檔是製作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互動式文檔需要以下兩步:
- add runtime: shiny 加入 YAML header.
- 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,以為這你可以將文檔分享給其他人。
- Email .Rmd 文件,但必須要用RStudio運行
- Shiny Server or Shiny Server Pro 進行分享,首先你的有伺服器!
- 最簡單的 ShinyApps.io
但是不能單個HTML文件進行分享,遺憾!
討論
The R Markdown 工作流非常方便.
可以製作幻燈片,這是shiny是很難完成的
互動式報告非常有利於展示,復用率高
推薦閱讀:
※乾貨教程|可能是最方便好用的文字雲工具
※什麼水平?使用 R 語言從拉勾網看數據挖掘崗位現狀
※PDNS數據驅動DGA分析
※數據挖掘|K-means聚類
※巡洋艦AI時代招你遠征