「R shiny 基礎」初識Shiny

傳送門

Shiny基礎教程:

簡介

shiny一個能夠方便構建交互式網頁應用的R包,在這一部分我們將會開始學習如何搭建一個Shiny應用。

如果你還沒有安裝Shiny的話,那么你需要打開R語言(顯然,你需要聯(lián)網)

install.packages("shiny")

案例

Shiny 提供了7個內置案例方便你熟悉shiny的不同屬性,了解shiny如何工作。并且每個案例都是完全獨立的shiny應用。讓我們先從Hello Shiny這個例子開始,了解如何用R的faithful數(shù)據集繪制一個直方圖。用戶可以選擇直方圖中每個分箱的大小,并且實時得到反饋。

library(shiny)
runExample("01_hello", port=9999, host="0.0.0.0")

隨后那么你就可以通過服務器的IP地址加端口號訪問這個應用。

網頁

Shiny應用的架構

一個簡單的Shiny應用只需要一個app.R腳本,一般放在一個項目文件夾下,例如newdir/app.R, 那么運行的方式為, runApp("newedir").

app.R包括三個部分

  • 一個用戶交互(UI)對象: 負責對網頁進行布局
  • 一個服務端(server)函數(shù): 服務器端處理數(shù)據
  • 一個shinyApp函數(shù)

Shiny 0.10.2之前,Shiny不支持單文件應用,ui對象和server函數(shù)需要單獨放在ui.Rserver.R中。

UI

如下是案例Hello Shinyui對象代碼

library(shiny)

# 定義柱狀圖的交互界面
ui <- fluidPage(

  #標題
  titlePanel("Hello Shiny!"),
  # 側邊欄,包含輸入和輸出的定義
  sidebarLayout(

    # 輸入的側邊欄
    sidebarPanel(

      # 輸入:關于bin的數(shù)目
      sliderInput(inputId = "bins",
                  label = "Number of bins:",
                  min = 1,
                  max = 50,
                  value = 30)

    ),
   # 展示輸出的界面
    mainPanel(

      # 輸出: 柱狀圖
      plotOutput(outputId = "distPlot")
    )
  )
)

sever

如下是案例Hello Shinyserver函數(shù)

# 定義繪制柱狀圖的代碼邏輯

server <- function(input, output) {

  # 代碼邏輯:
  # 用戶選擇不同的bin,產生不同的柱狀圖

  output$distPlot <- renderPlot({

    x    <- faithful$waiting
    bins <- seq(min(x), max(x), length.out = input$bins + 1)

    hist(x, breaks = bins, col = "#75AADB", border = "white",
         xlab = "Waiting time to next eruption (in mins)",
         main = "Histogram of waiting times")

    })

}

代碼很簡潔,基本就是等待用戶提供一個輸入,然后返回一個輸出, 和普通的R腳本沒有多大區(qū)別,唯一區(qū)別就是代碼是嵌套在reanderPlot函數(shù)里面。

運行一個新的Shiny應用

每一個shiny應用都有相同的結果: 一個app.R包含uiserver. 你可以新建一個文件件,然后把app.R放在里面,然后打開一個R終端,按照如下方式運行

library(shiny)
runApp("my_app") # my_app應該替換成你的應用文件夾名

復習

這一片文章主要是根據一個簡單的Shiny應用了解Shiny的結構和創(chuàng)建過程。分為如下步驟

  • 新建一個項目文件夾
  • 在文件夾中編輯app.R
  • 使用runApp啟動應用
  • 使用ctrl+c關閉應用

參考

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 發(fā)現(xiàn) 關注 消息 iOS 第三方庫、插件、知名博客總結 作者大灰狼的小綿羊哥哥關注 2017.06.26 09:4...
    肇東周閱讀 15,050評論 4 61
  • 在學習R的時候,R的包眾多,很多時候對于初學者會造成很大的困擾就是不知道用什么樣的包比較合適。我會在不斷使用...
    果果哥哥BBQ閱讀 16,455評論 0 62
  • 隨著市場對抗越來越激烈,客戶的訴求越來越高,民辦教育市場也發(fā)生了翻天覆地的變化。學校的上門量和成交量大大減少,學校...
    任學堂閱讀 188評論 0 0
  • 異步上傳文件,在很多場景中都有應用。本文介紹一種通過xhr和formdata實現(xiàn)的方法。 FormData屬于h5...
    PeterQ1998閱讀 2,653評論 0 0
  • 和日與春住、穿綠妝,不知哪物為人勤。理弄青絲,帶點歡顏,同百友興往閱江樓。 吟詩題詠清墨客,壯志豪情葉將軍。當年風...
    東方惠閱讀 241評論 0 1

友情鏈接更多精彩內容