参见:https://shiny.rstudio.com/tutorial/written-tutorial/lesson2/

模版

作者这里提供了一个app 脚本的模版:

  1. library(shiny)
  2. # Define UI ----
  3. ui <- fluidPage(
  4. )
  5. # Define server logic ----
  6. server <- function(input, output) {
  7. }
  8. # Run the app ----
  9. shinyApp(ui = ui, server = server)

如果我们尝试运行它,将是空空如也的结果:02. 初探shiny app 结构 - 图1

从ui 先下手

简单的shiny app 交互页面如下:

02. 初探shiny app 结构 - 图2

shiny 使用方法fluidPage 进行定义,它可以自动的根据设备和浏览器大小来适配显示。

其主要有两个元素:titlePanel,sidebarLayout。

titlePanel 用来显示app 标题,而sidebarLayout 就比较重要了,包括用户交互的输入选项和输出结果。

02. 初探shiny app 结构 - 图3

这里我们创建一个非常简单的全是文本的app:

  1. ui <- fluidPage(
  2. titlePanel("title panel"),
  3. sidebarLayout(
  4. sidebarPanel("sidebar panel"),
  5. mainPanel("main panel")
  6. )
  7. )

02. 初探shiny app 结构 - 图4

sidebarLayout 中的两个参数,也就对应了输入与输出的内容。

02. 初探shiny app 结构 - 图5

这里我们还可以对sidebarLayout 设置position,默认下输入的sidebar 是在左边的,我们可以修改到右边:

  1. ui <- fluidPage(
  2. titlePanel("title panel"),
  3. sidebarLayout(position = "right",
  4. sidebarPanel("sidebar panel"),
  5. mainPanel("main panel")
  6. )
  7. )

02. 初探shiny app 结构 - 图6

除此以外,我们还可以使用navlistPanel 创建导航,fluidRow 来自定义我们的sidebarLayout 内容布局。