如果闪亮的 DT renderdatatable 中的条件
if condition in shiny DT renderdatatable
我想在 shiny 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",该应用程序将完美运行。
有人有想法吗?
谢谢
如果您将 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 returns NULL 当 a 被选中时。
我想在 shiny 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",该应用程序将完美运行。 有人有想法吗? 谢谢
如果您将 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 returns NULL 当 a 被选中时。