5

光沢のあるドロップダウンを介してドロップインおよびドロップアウトするスライダーを備えたリアクティブ UI を作成しようとしています。私はreactiveUIスライダー(server.R)を備えたサーバーを持っています:

library(shiny)
shinyServer(function(input, output) {
  output$slider1 <- reactiveUI(function() {
    sliderInput("s1", "slide 1", min = 1,  max = 100, value = 1)  
  })

  output$slider2 <- reactiveUI(function() {
    sliderInput("s2", "slide 2", min = 1,  max = 100, value = 1)   
  }) 
})

次のコード (ui.R) を使用してサーバーを正常に実行できます。

library(shiny)
shinyUI(pageWithSidebar(
  headerPanel("Hello Shiny!"),
  sidebarPanel(

    selectInput("dataset", "number of buckets:", 
                choices = c(1,2,3)),

    conditionalPanel(
      condition = "input.dataset==2",
      uiOutput("slider1"),uiOutput("slider2")),

    conditionalPanel(
      condition = "input.dataset==1",
      sliderInput("s1", "slide 1", min = 1,  max = 100, value = 1) 
      )
  ),
  mainPanel(
  )
))

しかし、両方の conditionalPanels で uiOutput を呼び出そうとすると、サーバーがフリーズします。

library(shiny)
shinyUI(pageWithSidebar(
  headerPanel("Hello Shiny!"),
  sidebarPanel(

    selectInput("dataset", "number of buckets:", 
                choices = c(1,2,3)),

    conditionalPanel(
      condition = "input.dataset==2",
      uiOutput("slider1"),uiOutput("slider2")),

    conditionalPanel(
      condition = "input.dataset==1",
      uiOutput("slider1") 
      )
  ),
  mainPanel(
  )
))

これをいじってみたところ、同じ条件変数と複数の uiOutput 呼び出しを使用するたびに発生することがわかりました。助言がありますか?ありがとう。

4

1 に答える 1

5

答えについては、@Joe からのコメントを参照してください。

基本的に、outputIDinputIDsは一意である必要があります。同じページに同じ ID を持つ 2 つの UI 要素があると、エラーが発生します。これは光沢のある反応性の制限です。

@Jim からの回避策は、クライアントが使用する出力または入力ごとに複数の要素を作成することです。

 output$slider2_1 <- ...
 output$slider2_2 <- ...
于 2014-10-06T08:47:34.547 に答える