傳送門
Shiny基礎教程:
- 「R shiny 基礎」初識Shiny
- 「R shiny 基礎」如何進行網頁布局
- 「R shiny基礎」增加一些小控件
- 「R shiny基礎」交互式入門
- 「R shiny基礎」在shiny應用中加載數(shù)據和腳本
- 「R shiny基礎」reactive讓shiny應用運行速度變快
- 「R shiny基礎」使用shinyapp分享你的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.R和server.R中。
UI
如下是案例Hello Shiny的ui對象代碼
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 Shiny的server函數(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包含ui和server. 你可以新建一個文件件,然后把app.R放在里面,然后打開一個R終端,按照如下方式運行
library(shiny)
runApp("my_app") # my_app應該替換成你的應用文件夾名
復習
這一片文章主要是根據一個簡單的Shiny應用了解Shiny的結構和創(chuàng)建過程。分為如下步驟
- 新建一個項目文件夾
- 在文件夾中編輯
app.R - 使用
runApp啟動應用 - 使用ctrl+c關閉應用