5.2 UI设计

更多的输入与输出组件参见shiny官网

5.2.1 输入

sliderInput("min", "Limit (minimum)", value = 50, min = 0, max = 100)

对于形如selectInput()的函数,都是将你的信息传递给server的组件。这类组件的基本参数为ID、标签及其余参数。其中ID是组件的唯一标识符,用于后续调用(这里的ID是min,后续在server函数中通过input$min来调用该组件的输入值)。标签是该组件呈现给用户时所用的标签(这里的标签为Limit (minimum),也就是页面中滑条的标签)。其余参数往往是与组件类型相关的参数(这里value=50表示默认值,minmax则是滑条的上下限)。

ID是一个非常重要的概念,大多数的对象都可以设置ID,这样在server处就能够通过input$id来获取对应的输入

ui <- fluidPage(
  textInput("name", "What's your name?"),
  passwordInput("password", "What's your password?"),
  textAreaInput("story", "Tell me about yourself", rows = 3)
)

5.2.1.1 文本类组件

  1. textInput()

    适合单行文本输入

  2. passwordInput()

    适合密码类文本输入

  3. textAreaInput()

    适合多行文本输入

5.2.1.2 数值类组件

  1. numericInput()

    输入单个数值

  2. sliderInput()

    滑块选取数值。特别的,当默认值是一个长度为2的向量时,滑块条变成范围取值(双向),而非单个数值(单向)

5.2.1.3 日期类组件

  1. dateInput()

    输入日期

  2. dateRangeInput()

    输入日期范围

5.2.1.4 选择类组件

  1. selectInput()

    下拉式选择,可多选

  2. selectizeInput()

    selectInput()的增强版,适合更为复杂、大量选择的输入场景

  3. radioButtons()

    按钮式选择,只能单选

  4. checkboxGroupInput()

    勾选式选择,可单选可多选

  5. checkboxInput()

    勾选式选择,只能单选

注意参数choiceNames表示呈现给用户的选项名称,参数choiceValues表示传递给服务器端的实际值,二者一一对应

5.2.1.5 文件传输类组件

  1. fileInput()

    将用户的文件传输到服务器端

5.2.1.6 按钮类组件

  1. actionButton()

    通过点击传输信息。其中可根据class参数更改按钮的外观,详见此处

5.2.2 输出

textOutput("text")

对于形如textOutput()的函数,用于接收服务器输出的结果。同理,输出的内容需要由唯一标识符ID来进行匹配。当输出的结果在服务器端中用output$ID完成赋值,在ui中的输出函数中即可输入相应的ID来调用结果。

ui <- fluidPage(
  textOutput("text"),
  verbatimTextOutput("code")
)
server <- function(input, output, session) {
  output$text <- renderText({ 
    "Hello friend!" 
  })
  output$code <- renderPrint({ 
    summary(1:10) 
  })
}

5.2.2.1 文本类输出

  1. textOutput()

    用于一般的文本输出,常与渲染函数renderText()搭配

  2. verbatimTextOutput()

    用于代码结果的输出,常与渲染函数renderPrint()搭配

注意到,如果在渲染函数render中需要执行多行代码的话,则需要{}进行包裹

5.2.2.2 表格类输出

  1. tableOutput()

    输出静态表格,一次性展示完所有数据,常与渲染函数renderTable()搭配

  2. dataTableOutput()

    输出动态表格,可进行翻页,常与渲染函数renderDataTable()搭配

dataTableOutput()被弃用了,可以试试DT::DTOutput()

5.2.2.3 图像类输出

  1. plotOutput()

    输出图像,常与渲染函数renderPlot搭配

建议设置renderPlot(res = 96)

5.2.2.4 下载文件

  1. downloadButton()

  2. downloadLink()