R语言shiny包学习笔记(一)

shiny包学习笔记(一)

  • 认识shiny
  • 第一个例子
    • (01_hello)
      • 认识shiny APP的构成
        • 用户界面 (ui)
        • 服务器功能 (server)
        • shinyApp函数

认识shiny

shiny是一个R的软件包,它使得直接从R构建交互式web app更加简单。
shiny包中有11个例子,可以非常形象直观地解释shiny的工作方式。

第一个例子

(01_hello)

认识shiny APP的构成

shiny app 是包含于一个名为app.R的脚本中的,这个脚本存在于一个路径之中,例如newdir,则shiny APP可以通过`runApp(“newdir”)来运行。
app.R 共有三个部分:

  1. 一个用户界面 (ui)
  2. 一个服务器功能 (server)
  3. 对shiny APP的功能调用 (shinyApp)

即:

library(shiny)


ui <- ...

server <- ...

shinyApp(ui = ui, server = server)

注意:
在0.10.2版本之前,shiny并不支持单文件app,且 ui和server这两个部分的脚本需要分开编写,并保存为ui.R和server.R。shiny仍然支持这个功能,教程和大部分支持文档都将重心放在了单文件app上。

用户界面 (ui)

用户界面这一块控制着app的输出和外观。
(01_hello)的ui部分,如下:

#为绘制直方图的app定义ui界面
ui <- fluidPage(
  titlePanel("Hello Shiny!"),#app的标题
  #带有输出输入定义的边栏布局
  sidebarLayout(
    #输入的侧边面板
    sidebarPanel(
      #输入:箱数滑块
      sliderInput(inputId = "bins",
                  label = "Number of bins:",
                  min = 1,
                  max = 50,
                  value = 30)
    ),
    #显示输出的主面板
    mainPanel(
      #输出直方图
      plotOutput(outputId = "distPlot")
    )
  )
)

服务器功能 (server)

server 则包含着计算机生成应用程序所需要的指令。

#server.R
#定义绘制直方图所需的server逻辑
server <- function(input,output){
     
  #Old Faithful Geyser Data 的直方图
  #按要求数量的箱子
  #生成直方图法人表达式被包装在调用中
  #renderPlot 显示:
  #1. 因为是及时反应的,所以当输入(input$bins)改变时,应该自动重新执行
  #2. 输出类型是plot
  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")
  })
}

这个例子的server功能是非常简单的,脚本只是进行简单的运算然后就是将得到的箱数绘制成直方图。
然而,你可注意到大多数的脚本都被封装在对renderPlot的调用中。

shinyApp函数

shinyApp从UI/server中创建应用程序对象。

# 创建一个shiny app
shinyApp(ui=ui,server = server)

当shinyapp运行时,R的会话会非常繁忙,因此您可能无法运行任何R的指令。R正在监视应用程序并执行应用程序的反应。为了恢复R会话,只需要按下escape键或者单击停止图标。

你可能感兴趣的:(R,shiny学习)