我正在尝试在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
我试图让它创建一个列表,然后有两个操作按钮来添加/删除列表中的列表项。
答案 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)