Shiny 在列表中隐藏在标记列表中创建的小部件
我最近正在构建一个闪闪发光的应用程序,在我的应用程序的某个地方,我希望用户可以从一行Shiny 在列表中隐藏在标记列表中创建的小部件,shiny,Shiny,我最近正在构建一个闪闪发光的应用程序,在我的应用程序的某个地方,我希望用户可以从一行selectInput()小部件中指定任意数量的输入 由于selectInput()小部件的数量可能很大,因此我希望下一个selectInput()小部件仅在用户填充上一个小部件时显示 我的想法是,我将: 在标记列表中创建所有可能的selectInput()小部件 默认情况下将它们全部隐藏,然后 填写上一个时显示下一个 我对第一步和第三步很满意,但当我尝试使用shinyjs函数hide隐藏它们时,它似乎不适用于在
selectInput()
小部件中指定任意数量的输入
由于selectInput()
小部件的数量可能很大,因此我希望下一个selectInput()
小部件仅在用户填充上一个小部件时显示
我的想法是,我将:
selectInput()
小部件shinyjs
函数hide
隐藏它们时,它似乎不适用于在标记列表中创建的输入对象,它只适用于使用特定名称创建的小部件,请参见下面的示例:
library(shiny)
library(shinyjs)
ui <- fluidPage(
# Application title
titlePanel("Hello Shiny!"),
sidebarLayout(
# Sidebar with a slider input
sidebarPanel(
sliderInput("obs",
"Number of observations:",
min = 0,
max = 1000,
value = 500)
),
# Show a plot of the generated distribution
mainPanel(
useShinyjs(),
uiOutput('comparisons')
)
)
server <- shinyServer(function(input, output, session) {
observe(1, shinyjs::hide('compare_1') )
output$comparisons=renderUI({
out=tagList()
out=lapply(1:6, function(x){
selectizeInput(paste0('compare_',x),
label = 'Condition 1',
c('aa','bb', 'cc'))
})
out
})
})
shinyApp(ui, server)
库(闪亮)
图书馆(shinyjs)
uiHi您可以使用conditinalPanel
非常简单地实现这一点
ui <- fluidPage(
# Application title
titlePanel("Hello Shiny!"),
sidebarLayout(
# Sidebar with a slider input
sidebarPanel(
sliderInput("obs",
"Number of observations:",
min = 0,
max = 1000,
value = 500)
),
# Show a plot of the generated distribution
mainPanel(
useShinyjs(),
uiOutput('comparisons')
)
)
)
server <- shinyServer(function(input, output, session) {
output$comparisons=renderUI({
out=tagList(
selectizeInput(paste0('compare_1'),
label = 'Condition 1',
c("",'aa','bb', 'cc')),
lapply(2:6, function(x){
conditionalPanel(
paste0("input.compare_",x-1," != ''"),
selectizeInput(paste0('compare_',x),
label = paste0('Condition ',x),
c("",'aa','bb', 'cc'))
)
})
)
out
})
})
shinyApp(ui, server)
ui这是一个很好的解决方案!