我想在闪亮的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)
该应用不会显示任何输出,如果&#34; a&#34;被选中,但如果&#34; b&#34;被选中。 有没有人有想法? 感谢。
答案 0 :(得分:2)
如果您将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)
}
})
}
反应元素从{}中取出最后一个元素。我想你的第二个如果在选择a时返回NULL。