5

ShinyTree: view without selectのフォローアップ。

library(shiny)
library(shinyTree)
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
  })
})
ui <- shinyUI(
  shiny::fluidPage(
    h4('Shiny hierarchical checkbox')
    ,shinyTree("tree", checkbox = TRUE)
  )
)
shinyApp(ui, server)

ここに画像の説明を入力

I.1.2.のように変数を設定したいと思います。lorem impsum が選択されている場合、その値は4たとえば です。

私が知っているのは、私が使用しなければならないということだけreactive()です。ここでわかるように、私は s でこれを行う方法を学びましたcheckboxGroupInputが、これが 内で実行できるかどうかは不明ですshinyTree。私がオンラインで見つけることができるこれに関するドキュメントはありません。

これはどのように行うことができますか?

関数hereも見ましたが、使用方法がわかりません。

4

1 に答える 1

4

余談ですが、このパッケージのドキュメントがまばらであることに本当にショックを受けました。

GitHub コードget_selected()でわかるように、この関数はベクトルを返します。を使用します。format = "slices"

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

library(shiny)
library(shinyTree)
ui <- shinyUI(
  shiny::fluidPage(
    h4('Shiny hierarchical checkbox'),
    shinyTree("tree", checkbox = TRUE),
    # table of weights
    fluidRow(column("",
                    tableOutput("Table"), width = 12,
                    align = "center"))
  )
)
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$Table <- renderPrint({

    names(as.data.frame(get_selected(input$tree, format = "slices")))

  })
})
shinyApp(ui, server)

I.1.2 を選択した場合。lorem impsum の場合、以下が返されます。

ここに画像の説明を入力

これは、列名を持つ長さ 1 のベクトルです。スペースの代わりにドットが使用されていることに注意してください。

したがって、これが選択されたときに変数xを等しい値に設定したい場合は、が上記にあるかどうかを確認してから、割り当てを実行する必要があります。4I.1.2.lorem.impsumnames

library(shiny)
library(shinyTree)
ui <- shinyUI(
  shiny::fluidPage(
    h4('Shiny hierarchical checkbox'),
    shinyTree("tree", checkbox = TRUE),
    fluidRow(column("",
                    tableOutput("Table"), width = 12,
                    align = "center")),
    fluidRow(column("",
                    tableOutput("Table2"), width = 12,
                    align = "center"))
  )
)
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
  })

  x <- reactive({
    if('I.1.2.lorem.impsum' %in% names(
      as.data.frame(
        get_selected(
          input$tree, format = "slices")))){

      x <- 4

    }
  })


  output$Table <- renderPrint({

    names(as.data.frame(get_selected(input$tree, format = "slices")))

  })

  output$Table2 <- renderTable({

    as.data.frame(x())

  })
})
shinyApp(ui, server)

与える

ここに画像の説明を入力

望んだ通りに。

于 2016-08-29T16:46:27.270 に答える