闪亮的反应性多级列表

时间:2017-06-08 20:01:08

标签: r shiny

我正在尝试在Shiny中创建一个多级列表,并且可以将子项添加到父级,但我无法让它被反应。是否可以让一个闪亮的按钮附加一个由下一个整数索引的新项目?

例如:

 1.
 1.1
 1.1.1
 1.2

具有在1.1索引1.1.2下“添加”新项目的功能,以及在1.2下1.2.1的能力,如下所示:

 1.
 1.1
 1.1.1
 1.1.2
 1.2
 1.2.1

我试图让它创建一个列表,然后有两个操作按钮来添加/删除列表中的列表项。

1 个答案:

答案 0 :(得分: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)