【发布时间】:2020-04-04 19:23:09
【问题描述】:
假设我有以下 UI:
ui <- fluidPage(
checkboxGroupInput("checkbox", "", choices = colnames(mtcars)),
tableOutput("table")
)
一旦至少选择了一个复选框选项,我想呈现mtcars 的表格。为此,我遇到了req(),但我看不出它与if 语句有什么不同,即使阅读有关此函数的文档,它的定义也非常接近if 语句的定义:
确保值是可用的(“真实”——见细节) 进行计算或动作。如果任何给定的值是 不真实,通过引发“静默”异常停止操作 (不被 Shiny 记录,也不显示在 Shiny 应用的 UI 中)。
那么,这个表格是怎么渲染的:
server <- function(input, output) {
output$table <- renderTable({
req(input$checkbox)
mtcars %>% select(input$checkbox)
})
}
shinyApp(ui, server)
和这个不同?:
server <- function(input, output) {
output$table <- renderTable({
if(!is.null(input$checkbox))
mtcars %>% select(input$checkbox)
})
}
shinyApp(ui, server)
TL;DR:req() 与 if 语句的不同之处在于您的编写方式?
【问题讨论】:
标签: r shiny shiny-reactivity