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

本文介绍了R语言中的shiny包,用于构建交互式web应用。通过学习shiny的第一个例子(01_hello),理解了shiny app由ui、server和shinyApp函数三部分组成。ui负责界面设计,server执行计算并生成图表,如直方图。shinyApp函数整合应用。在0.10.2版本以前,ui和server需分开编写,但现在支持单文件app。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

认识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键或者单击停止图标。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值