Shiny R闪亮-无法在主面板中显示基于“的数据表”;选择输入";用户选择
我试图根据用户从下拉列表中的选择在主面板中显示一个表 例如,“selectInput”下拉列表将具有表789中的值(选项为123,xyz,…) 如果用户选择123,则必须显示“table123”,否则将显示“table456” 我对shiny很陌生,尝试了下面的内容,得到了“尝试复制“closure”类型的对象”错误。我不确定我错过了什么。有人能帮忙吗 服务器:Shiny R闪亮-无法在主面板中显示基于“的数据表”;选择输入";用户选择,shiny,shinydashboard,shinyapps,shiny-reactivity,Shiny,Shinydashboard,Shinyapps,Shiny Reactivity,我试图根据用户从下拉列表中的选择在主面板中显示一个表 例如,“selectInput”下拉列表将具有表789中的值(选项为123,xyz,…) 如果用户选择123,则必须显示“table123”,否则将显示“table456” 我对shiny很陌生,尝试了下面的内容,得到了“尝试复制“closure”类型的对象”错误。我不确定我错过了什么。有人能帮忙吗 服务器: server = function(input, output, session) { output$outputt
server = function(input, output, session) {
output$outputtable = reactive({ifelse(input$selction == '123', DT::renderDataTable(table123), DT::renderDataTable(table456)) })
}
用户界面:
ui我认为您在这里混为一谈,您不应该将renderDataTable
放入reactive
,这应该可以:
library(shiny)
table789 <- mtcars
table456 <- iris
table123 <- mtcars
table789$column1 <- sample(c("123","456"),nrow(table789),replace = T)
ui <- fluidPage(
sidebarPanel(selectInput("selection", "Select", choices = unique(table789$column1), selected = "xyz")),
mainPanel(
tabsetPanel(
tabPanel("select",
DT::dataTableOutput("outputtable")
)
)
)
)
server = function(input, output, session) {
data <- eventReactive(input$selection,{
if(input$selection == "123"){
return (table123)
}
table456
})
output$outputtable <- DT::renderDataTable(
data()
)
}
#Run the app
shinyApp(ui = ui, server = server)
库(闪亮)
表789成功了!!!非常感谢您的迅速回复!!!但我真的不明白为什么“ifelse”在这种情况下不起作用。他们之间有什么区别?如果条件为TRUE,您也使用了“return()”,但对于FALSE条件,则不使用。你能解释一下吗?如果你看一下?ifelse
,你会看到ifelse返回一个与test形状相同的值…
它不是数据框
谢谢你的帮助,猪排先生!!!
library(shiny)
table789 <- mtcars
table456 <- iris
table123 <- mtcars
table789$column1 <- sample(c("123","456"),nrow(table789),replace = T)
ui <- fluidPage(
sidebarPanel(selectInput("selection", "Select", choices = unique(table789$column1), selected = "xyz")),
mainPanel(
tabsetPanel(
tabPanel("select",
DT::dataTableOutput("outputtable")
)
)
)
)
server = function(input, output, session) {
data <- eventReactive(input$selection,{
if(input$selection == "123"){
return (table123)
}
table456
})
output$outputtable <- DT::renderDataTable(
data()
)
}
#Run the app
shinyApp(ui = ui, server = server)