私はR Shinyを初めて使用しています。私はいくつかの動的に生成されたボタンでアプリケーションを作成しようとしています。各ボタンにはobserveEventが関連付けられています。すべてのobserveEventを削除するリセットボタンを追加したいと思います。私はいくつかのリンクを調べて、destroy()関数を同じものに使うことができることを発見しましたが、その使い方を理解することができません。助言がありますか?ありがとう。R Shiny Destroy ObserveEvent
library(shiny)
ui<-fluidPage(
actionButton(inputId = "add",label = "Add Stuff"),
htmlOutput("obs"),
actionButton("reset","Reset")
)
server<-function(input,output,session){
output$obs<-renderUI(HTML({names(input)}))
observeEvent(input$add,{
addModal<-function(failed=FALSE){
modalDialog(size = "l",easyClose = T,title = "Add",footer = "",
selectInput(inputId = "stuff",label = "Select",choices = c("A","B","C","D","E")),
numericInput(inputId = "numstuff",label = "Quantity",min = 1,max = 5,value = 1),
actionButton(inputId = "add2",label = "Add")
)
}
showModal(addModal())
})
num<<-0
observeEvent(input$add2,{
num<<-num+1
insertUI(selector = "#add",where = "beforeBegin",
ui = actionButton(inputId = paste0("comp",num),label = paste0(input$stuff,":",input$numstuff))
)
lapply(num:num,function(i){
observeEvent(input[[paste0("comp",i)]],{
modModal<-function(failed=FALSE){
modalDialog(size = "l",easyClose = T,title = "Delete",footer = "",
# numericInput(inputId = "newquan",label = "New Quantity",min=1,max=5,value=1),
actionButton(inputId = paste0("gomod",i),label = "Delete")
)
}
showModal(modModal())
},ignoreInit = T)
observeEvent(input[[paste0("gomod",i)]],{
nm<-paste0("#comp",i)
removeUI(selector=nm)
})
})
})
observeEvent(input$reset,{
observers<-names(input)
lapply(observers,function(x){
if(substr(x,1,4)=="comp"){
obs<-input[[x]]
obs$destroy()
}
})
})
}
shinyApp(ui=ui,server=server)