2017-06-08 14 views
0

私はシャイニーで複数のレベルのリストを作成しようとしていますが、それは親に子を追加する機能を備えていますが、それを反応させることはできません。次の整数でインデックスされた新しい項目を追加するためにボタンを光沢のあるものにすることは可能ですか?例えばReactive Multi-level List in Shiny

:1.1インデックス化1.1.2の下に新しい項目を "追加" する機能と同様に1.2の下で1.2.1の機能により

1. 
1.1 
1.1.1 
1.2 

下図のように:

1. 
1.1 
1.1.1 
1.1.2 
1.2 
1.2.1 

私はそれがリストを作成し、リストのリスト項目を追加/削除するための2つのアクションボタンを持っているようにしようとしています。

+0

あなたは1.1.2または1.2.1を追加する場合はどのように決めるのですか? – BigDataScientist

+0

複数レベルのリスト内のすべての項目にアクションボタンが表示され、子を追加して親として設定します。これは可能ですか、それとも単に他のメンバーを追加する方が簡単でしょうか?ユーザーは番号スキーマを定義し、リストはその入力に合わせて調整されますか? –

+1

私はselectinputを提案して親を選択し、次に、アクションボタンで選択した親に子を追加します。あなたはどう思いますか? – BigDataScientist

答えて

1

あなたはreactiveValue()に保管し、コメントで述べたようにselectInput()を経由して選択することができます

ui <- fluidPage(
    uiOutput("parent"), 
    actionButton("add", "add"), 
    actionButton("remove", "remove"), 
    verbatimTextOutput("txt") 
) 
server <- function(input, output){ 
    global <- reactiveValues(lst = list(list(list(1),list(2), list(3)))) 

    output$parent <- renderUI({ 
    selectInput("par", "parent", 1:length(global$lst[[1]])) 
    }) 

    observe({ 
    if(input$remove){ 
     isolate({ 
     lst <- global$lst[[1]] 
     len <- as.numeric(input$par) 
     lens <- lengths(lst) 
     global$lst[[1]][[len]][[lens[len]]] <- NULL 
     }) 
    } 
    }) 

    observe({ 
    if(input$add){ 
     isolate({ 
     lst <- global$lst[[1]] 
     len <- as.numeric(input$par) 
     lens <- lengths(lst) 
     global$lst[[1]][[len]][[lens[len] + 1]] <- "i am the new guy" 
     }) 
    } 
    }) 


    output$txt <- renderPrint({ 
    str(global$lst) 
    }) 
} 
shinyApp(ui, server) 
+0

それは本当にうまくいく。ありがとう@BigDataScientist。私はこれが私がしたいことのための大きな基盤を置いていると思います。 –

+0

リスト内に作成されたすべてのアイテムに対して、どのようにしてtextInputを関連付けるのですか?階層が作成されたら、リスト内の各項目の入力を作成します。 –

関連する問題