資料玩家人人必備! 5 分鐘快速部署你的第一支 R Shiny 互動式圖表網頁APP

打從 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語言實作筆記系列 – 2D視覺化入門

* 統計R語言實作筆記系列 – 資料尺度與變數類型

* 統計R語言實作筆記系列 – R簡介與資料輸入

* 統計R語言實作筆記系列 – 用 SHINY 套件極速打造你的商業智慧分析網站!

 

(Visited 37,439 times, 20 visits today)

Wendell.Huang

科技公司嫌棄太活潑,消費品牌挑剔太沉悶..., 經常必須解釋自己在學什麼, 不小心就摔破對方眼鏡的跨領域玩家。

2 Comments

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *