Я хочу динамически формировать вкладки в моем приложении, то есть когда я выберу варианты в раскрывающемся меню, и как только я выберу одну опцию, должна появиться вкладка с тем же именем.моя база данных. Чтобы прояснить сценарий, я прикрепляю пример приложения, которое динамически показывает вкладки, и позже я прикреплю свой код. Вот пример приложения:
library(shiny)
ui <- (fluidPage(
titlePanel("Demonstration of renderUI in shiny - Dymanically creating the tabs based on user inputs"),
sidebarLayout(
sidebarPanel(
# Numeric input to enter the number of tabs needed
numericInput("n", 'Enter the number of tabs needed', 1)
),
mainPanel(
uiOutput('tabs')
)
)
))
server <- (function(input,output){
output$tabs = renderUI({
Tabs <- lapply(paste("tab no.", 1:input$n, sep=" "), tabPanel)
do.call(tabsetPanel, Tabs)
})
})
shinyApp(ui, server)
Здесь вкладки увеличиваются в соответствии с увеличенными числами иуменьшено, у меня есть раскрывающееся меню, в котором будут показаны кортежи моей таблицы базы данных, как показано здесь
| name |
+----------------------+
| aaa |
| kart |
, и вот мой код с ошибкой:
library("shiny")
library("shinydashboard")
library("pool")
library("DBI")
pool <- dbPool(drv = RMySQL::MySQL(),dbname = "demo",host = "db.cr7dht.us-east-2.rds.amazonaws.com",username = "kak",password = "1278", port = 3306)
mychoices = dbGetQuery(pool,"select available_scenario from sc;")
ui <- (fluidPage(
titlePanel("Demonstration of renderUI in shiny - Dymanically creating the tabs based on user inputs"),
sidebarLayout(
sidebarPanel(
selectInput('n', "available scenarios", choices = mychoices, multiple = TRUE),
verbatimTextOutput("selected")
),
mainPanel(
uiOutput('tabs')
)
)
))
server <- (function(input,output,session){
output$tabs = renderUI({
observe({
updateSelectInput(
session, "n", choices = mychoices
)
})
Tabs <- lapply(paste("tab name", 1:input$choices, sep=" "), tabPanel)
do.call(tabsetPanel, Tabs)
})
})
shinyApp(ui, server)