【问题标题】:if condition in shiny DT renderdatatable如果闪亮的 DT 渲染数据表中的条件
【发布时间】:2017-09-30 02:13:32
【问题描述】:

我想在闪亮的 DT::renderDataTable 中使用 if 条件,但它不能正常工作。 这是一个最小的例子:

library(DT)
library(shiny)

ui <- shinyUI(fluidPage(
  titlePanel(""),

  sidebarLayout(
    sidebarPanel(radioButtons("button", "", choices=c("a", "b"))),
      mainPanel(DT::dataTableOutput("table1")) 
  )
))

server <- function(input, output){
 x <- data.frame(col1 = 1:2, col2 = 3:4, col3 =5:6)
 y <- data.frame(col1 = 10:11, col2 = 20:21)

 output$table1 <- DT::renderDataTable({
   if(input$button == "a"){
     datatable(x)
   }
   if(input$button == "b"){
     datatable(y)
   }
   })
}

shinyApp(ui, server)

如果选择了“a”,应用程序不会显示任何输出,但如果选择了“b”,则可以完美运行。 有人有想法吗? 谢谢。

【问题讨论】:

    标签: r shiny dt


    【解决方案1】:

    如果您将 if 结构更改为 else if,它将起作用。

    server <- function(input, output){   
        x <- data.frame(col1 = 1:2, col2 = 3:4, col3 =5:6)   
        y <- data.frame(col1 = 10:11, col2 = 20:21)
        output$table1 <- DT::renderDataTable({
            if(input$button == "a"){
              datatable(x)
            }
            else if(input$button == "b"){
              datatable(y)
            }   
        }) 
    }
    

    反应元素从 {} 中获取最后的东西。我猜你的第二个 if 在选择 a 时返回 NULL。

    【讨论】:

      猜你喜欢
      • 2015-10-19
      • 2017-05-05
      • 2018-02-01
      • 2014-10-22
      • 2016-06-12
      • 2018-08-14
      • 2021-05-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多