打從 2012 年下半首次亮相開始,在玩 R 的資料科學社群當中,出現了一個人人都在談論、場場都在介紹的套件:Shiny 。這個由 R 相關的新創團隊 R Studio 所開發的套件,如今在許多企業( 最近就聽說過包括 ebay 在內的幾間知名廠商)的內部研究專案中都扮演著 prototype 生產器的重要角色。
Shiny 到底是做什麼的?為什麼可以讓許多使用者趨之若鶩?
不囉嗦,直接來看例子:
互動式網頁的最大特色是根據使用者在互動式選單的選擇不同,會即時反映出運算結果,而在 Shiny 當中,則是實現了 R 的繪圖功能網頁化,而且也支援同樣火熱的繪圖套件 ggplot2。
由於透過 Shiny 產生的圖表背後是由 R 的程式來實現,因此你可以輸入靜態的資料表,也可以用來呈現 data-mining 後的演算結果。雖然動態運算 ETL (Extract, Transform, Load) 並不是 Shiny 的強項,但其實你也可以透過一些小技巧來呈現 real-time 商業智慧報表,有興趣的讀者可以參考這一串 google 論壇上關於 Shiny ETL 的討論。
不過,這些還不能說明 Shiny 的真正好處,假如要做到上述的應用程式,只要有熟悉網頁技術的工程師搭配都能夠做得出來,而 Shiny 所提供的則是「不需要 html 或者 css 的先備知識」以及「5 分鐘完成程式部署」的簡單特性。
對於資料分析者而言,這真是再好不過的幫手了。
R studio 提供了兩種方式進行部署,一種是透過 Shiny Server ,另外一種則是藉由 Shinyapps.io 的服務來實現,兩個方式的主要差別在於在 Shiny Sever 中你可以同時運行多支應用程式,而 Shinyapps.io 一次只能啟用一個。
假如你想要搭配使用者登入的功能,可以進一步參考 Pro 版的 Shiny Sever 或 Shinyapps.io 。
以下舉 Shinyapps.io 為例,上架一支官方的 sample code:
首先,進入 R studio 編輯器,在這裡你會需要先設定一個工作資料夾,以及兩個 script 檔案:「ui.R」、「server.R」。這兩個檔案就是 Shiny 的核心, ui.R 的條件將決定終端頁面的形式, sever.R 則是運算程式與 UI 之間的溝通橋梁。
對於這兩個檔案的細部說明有興趣的讀者請參閱這篇 Shiny 教學,本文就略過不提,直接進行後面部署相關的程序。
直接登入 Shinyapps.io 網站:
在左方的選單找到 Account:
點選 Acoount ,選擇 Tokens ,建立一個新的 Token,點選該 Token 會出現以下畫面:
接著點選「copy to clipboard」,把該程式碼複製下來,貼到 R 命令列中執行。
請注意 Shinyapps 只支援 3.0.0 以上的版本,另外除了 Shiny 本身之外,也要記得先安裝 Shinyapps 套件,或者輸入以下程式碼進行安裝:
if (!require(“devtools")) install.packages(“devtools") devtools::install_github(“rstudio/shinyapps")
別忘了也要安裝「ggplot2」以及「shiny」套件:
install.packages(c(‘ggplot2’, ‘shiny’))
在正式上場之前,記得先用 library() / require() 功能載入各套件,接著才能使用 deploy(“APP名稱") 部署 APP。
deployApp()
什麼是 APP 的名稱呢?其實就是存放「ui.R」、「server.R」的資料夾囉!若是已經設定該資料夾為工作區域,可以直接呼叫該名稱,不然就得指定完整的路徑才行。完成之後,就能夠隨時隨地透過網路存取互動式的資訊圖表囉!
更多內容,可以參考這篇部署 Shiny 的官方教學文章。
假如對於 Shiny 的例子還看不過癮,ShowMeShiny 以及 Shiny User Showcase 中還有許多精彩範例可以參考。
更多資料分析及 R 相關文章:
* 統計R語言實作筆記系列 – R的字串處理:GREP套件包(GREP、GREPL、REGEXPR、GREGEXPR、REGEXEC)
* 統計R語言實作筆記系列 – 2D視覺化進階 GGPLOT()的基本架構(一)
* 統計R語言實作筆記系列 – 用 SHINY 套件極速打造你的商業智慧分析網站!
2 Comments