5.2 UI设计
更多的输入与输出组件参见shiny官网。
5.2.1 输入
对于形如selectInput()
的函数,都是将你的信息传递给server的组件。这类组件的基本参数为ID、标签及其余参数。其中ID是组件的唯一标识符,用于后续调用(这里的ID是min
,后续在server函数中通过input$min
来调用该组件的输入值)。标签是该组件呈现给用户时所用的标签(这里的标签为Limit (minimum)
,也就是页面中滑条的标签)。其余参数往往是与组件类型相关的参数(这里value=50
表示默认值,min
与max
则是滑条的上下限)。
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.2 数值类组件
numericInput()
输入单个数值
sliderInput()
滑块选取数值。特别的,当默认值是一个长度为2的向量时,滑块条变成范围取值(双向),而非单个数值(单向)
5.2.1.4 选择类组件
selectInput()
下拉式选择,可多选
selectizeInput()
selectInput()
的增强版,适合更为复杂、大量选择的输入场景radioButtons()
按钮式选择,只能单选
checkboxGroupInput()
勾选式选择,可单选可多选
checkboxInput()
勾选式选择,只能单选
注意参数
choiceNames
表示呈现给用户的选项名称,参数choiceValues
表示传递给服务器端的实际值,二者一一对应
5.2.1.6 按钮类组件
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 文本类输出
textOutput()
用于一般的文本输出,常与渲染函数
renderText()
搭配verbatimTextOutput()
用于代码结果的输出,常与渲染函数
renderPrint()
搭配
注意到,如果在渲染函数
render
中需要执行多行代码的话,则需要{}
进行包裹