0

このサイトで何度も不平を言っているように ( shinyTree: チェックボックスがチェックされている場合は変数を値に設定するshinyTree: 選択せずに表示する)、 に関するドキュメントが深刻に不足していshinyTreeます。

の次のコードを検討してくださいR

library(shiny)
library(shinyTree)
ui <- shinyUI(
  shiny::fluidPage(
    h4('Shiny hierarchical checkbox'),
    shinyTree("tree", checkbox = TRUE),
    # slider
    sliderInput("slider_input",
                                          "Slider",
                                          min = 0,
                                          max = 100,
                                          value = 0,
                                          step = 0.1,
                                          width = '100%'),
                              width = 8)
)
server <- shinyServer(function(input, output, session) {  
  output$tree <- renderTree({ 
    sss=list(  'I lorem impsum'= list( 
      'I.1 lorem impsum'   =  structure(list('I.1.1 lorem impsum'='1', 'I.1.2 lorem impsum'='2'),stopened=TRUE),  
      'I.2 lorem impsum'   =  structure(list('I.2.1 lorem impsum'='3'), stopened=TRUE)))
    attr(sss[[1]],"stopened")=TRUE 
    sss
  })

})
shinyApp(ui, server)

ここに画像の説明を入力

ツリーで選択されたsliderInput場合にのみ表示されることに興味があります。I.1.1 lorem impsum

checkboxGroupInputs を使用する場合、光沢のある conditionalPanel javascript condtions で見つかったものを使用できることを知っています: javascript に R %in% 演算子はありますか? . これはすべてうまくいきますが、ドキュメントが不足しているため (およびこのサイトでの質問が不足しているため) shinyTree、この問題をどのように追求すればよいかわかりません。を使用する必要があることは理解していますが、関数の引数でconditionalPanelツリーとそのノードを参照する方法がわかりませんcondition。問題をさらに複雑にしているのは、ツリー自体が になくinput(input$宣言時に がないため)、output$私の知る限り、変数を参照できないことです。

を JavaScript で記述しなければならないことは知っていconditionますが、ツリーとそのノードを参照する方法がわからない場合、これは役に立ちません。

4

1 に答える 1

1

サーバー側のレンダリング スライダー

library(shiny)
library(shinyTree)
ui <- shinyUI(
  shiny::fluidPage(
    h4('Shiny hierarchical checkbox'),
    shinyTree("tree", checkbox = TRUE),
    # slider
    uiOutput("slider_ui"),

    width = 8)
)
server <- shinyServer(function(input, output, session) {  
  output$tree <- renderTree({ 
    sss=list(  'I lorem impsum'= list( 
      'I.1 lorem impsum'   =  structure(list('I.1.1 lorem impsum'='1', 'I.1.2 lorem impsum'='2'),stopened=TRUE),  
      'I.2 lorem impsum'   =  structure(list('I.2.1 lorem impsum'='3'), stopened=TRUE)))
    attr(sss[[1]],"stopened")=TRUE 
    sss
  })
  output$slider_ui=renderUI({
if('I.1.1 lorem impsum' %in% get_selected(input$tree)){
  sliderInput("slider_input",
              "Slider",
              min = 0,
              max = 100,
              value = 0,
              step = 0.1,
              width = '100%')
}
  })


})
shinyApp(ui, server)

Shinyjs バリアント

library(shiny)
library(shinyTree)
library(shinyjs)
ui <- shinyUI(
  shiny::fluidPage(
    useShinyjs(),
    h4('Shiny hierarchical checkbox'),
    shinyTree("tree", checkbox = TRUE),
    # slider
    sliderInput("slider_input",
                "Slider",
                min = 0,
                max = 100,
                value = 0,
                step = 0.1,
                width = '100%'),

    width = 8)
)
server <- shinyServer(function(input, output, session) {  
  output$tree <- renderTree({ 
    sss=list(  'I lorem impsum'= list( 
      'I.1 lorem impsum'   =  structure(list('I.1.1 lorem impsum'='1', 'I.1.2 lorem impsum'='2'),stopened=TRUE),  
      'I.2 lorem impsum'   =  structure(list('I.2.1 lorem impsum'='3'), stopened=TRUE)))
    attr(sss[[1]],"stopened")=TRUE 
    sss
  })
observe({
  if('I.1.1 lorem impsum' %in% get_selected(input$tree)){
    show("slider_input")
  }else{
    hide("slider_input")
  }
})

  })



shinyApp(ui, server)
于 2016-08-30T12:30:02.703 に答える