私は最近shiny
というアプリをビルドしています。私のアプリのどこかで、ユーザがselectInput()
ウィジェットから指定できる任意の数の入力を期待しています。tagListで作成されたウィジェットをshinyで表示しない
ウィジェットの数が多い可能性があるので、次のselectInput()
ウィジェットは、そのウィジェットがユーザーによって埋められたときのみ表示されるようにしたいと思います。
私の考えは、私がすることです:
tagList
にすべての可能なselectInput()
ウィジェットを作成、- 、デフォルトではそれらすべてを隠し、そして
- は、以前のものが満たされたときに、次のいずれかを示しています。
Iは、第1および第3のステップと罰金ですが、私はshinyjs
機能hide
を使用して、それらすべてを隠そうとしたとき、それはそれはtagList
で作成した入力オブジェクトに対して動作しないようですが、それだけでそれらのウィジェットのために働きますそれは、特定の名前で作成され、以下の例を参照してください。
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)
は私がcompare_1
compare_6
にそれらに名前を付け、6つのselectInput
ウィジェットを作成するだと言う、私はまた、単なる例として示すことobs
と呼ばれるsliderInput
を作成しました。サーバーでは、shinyjs::hide('obs')
と言うと、sliderInput
は非表示になりますが、shinyjs::hide('compare_1')
と呼ぶと、selectInput
はまだ存在します。任意のアイデアをいただければ幸いです!
で素敵なソリューションですそのことを行うことができます! – Florian
これはまさに私が探していたものです。ありがとう!! – Sni