2016-08-29 55 views
1

フォローアップshinyTree: view without selectingshinyTree:チェックボックスがチェックされている場合、変数を値に設定します。

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) 

enter image description here

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

私が知る限り、私はreactive()を使用する必要があります。 hereが表示されているので、私はcheckboxGroupInputでこれを行う方法を学びましたが、これがshinyTree内でさえできるかどうかは私には不明です。私がオンラインで見つけることができるこの文書はありません。

どうすればいいですか?

私はまた、関数hereを見たことがありますが、それらの使い方はわかりません。

+0

真剣に、なぜdownvoteですか?私はこの問題を解明しようと努力してきました。 – Clarinetist

答えて

2

このパッケージのドキュメントがどれほど疎かになっているのか、私は本当にショックを受けました。

get_selected()は、GitHub codeに示すように、ベクトルを返します。私はformat = "slices"を使用するつもりです。 I.1.2を選択すると

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) 

は、次のコードを考えてみましょう。 Loremののimpsumは、以下が返されます。

enter image description here

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

我々はこれが選択されている場合4に等しい変数xを設定したい場合はこのように、我々はI.1.2.lorem.impsumは上記namesであるかどうかを確認して、割り当てを実行する必要があります。所望に応じて

enter image description here

与え

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) 

関連する問題