Ich versuche, uiOutput
Elemente mit einem Index hinzufügen und entfernen, um jedes einzelne Element zu verfolgen. Es gibt eine actionButton
für das Hinzufügen und das Element der Liste, und eine x Schaltfläche für jedes Element, das das ausgewählte Element entfernt, wie im Bild unten:Dynamische Hinzufügen und Entfernen von uiOutput-Elementen basierend auf Index mit actionButtons
Ich bin ein einziges .Rmd mit Datei, die sowohl ui
als auch server
Code enthält. Meine aktuelle Lösung (mit denen ich kann die gewünschte Funktionalität nicht produziert oben gezeigt --- es im Grunde nichts tut) ist die folgende:
actionButton("addFilter", "Add filter", icon=icon("plus", class=NULL, lib="font-awesome"))
i <- 0
observeEvent(input$addFilter, {
i <<- i + 1
uiOutput(paste("filterPage",i,sep=""))
output[[paste("filterPage",i,sep="")]] = renderUI({
fluidPage(
fluidRow(
column(6, selectInput(paste("filteringFactor",i,sep=""), "Choose factor to filter by:",
choices=c("factor A", "factor B", "factor C"), selected="factor B",
width="100%")),
column(6, actionButton(paste("removeFactor",i,sep=""), "",
icon=icon("times", class = NULL, lib = "font-awesome")))
)
)
})
observeEvent(input[[paste("removeFactor",i,sep="")]], {
output[[paste("filterPage",i,sep="")]] = renderUI({})
})
})
Als ich uiOutput
setzen und die Entfernen-Taste observeEvent
außerhalb der Add-Taste observeEvent
der Code funktioniert, aber ich brauche eine gesonderte Erklärung pro Index haben, wie folgt:
uiOutput(paste("filterPage",1,sep=""))
uiOutput(paste("filterPage",2,sep=""))
uiOutput(paste("filterPage",3,sep=""))
uiOutput(paste("filterPage",4,sep=""))
actionButton("addFilter", "Add filter", icon=icon("plus", class=NULL, lib="font-awesome"))
i <- 0
observeEvent(input$addFilter, {
i <<- i + 1
output[[paste("filterPage",i,sep="")]] = renderUI({
fluidPage(
fluidRow(
column(6, selectInput(paste("filteringFactor",i,sep=""), "Choose factor to filter by:",
choices=c("factor A", "factor B", "factor C"), selected="factor B",
width="100%")),
column(6, actionButton(paste("removeFactor",i,sep=""), "",
icon=icon("times", class = NULL, lib = "font-awesome")))
)
)
})
})
observeEvent(input[[paste("removeFactor",1,sep="")]], {
output[[paste("filterPage",1,sep="")]] = renderUI({})
})
observeEvent(input[[paste("removeFactor",2,sep="")]], {
output[[paste("filterPage",2,sep="")]] = renderUI({})
})
observeEvent(input[[paste("removeFactor",3,sep="")]], {
output[[paste("filterPage",3,sep="")]] = renderUI({})
})
observeEvent(input[[paste("removeFactor",4,sep="")]], {
output[[paste("filterPage",4,sep="")]] = renderUI({})
})
ich nicht eine for-Schleife oder lapply
Aufruf zu arbeiten (es sieht aus wie ein Scoping-Problem, das ich nicht verstehe) machen könnte . Da die Anzahl der Elemente nicht im Voraus bekannt ist, werden die Werte für mich nicht funktionieren. Weiß jemand, wie das funktioniert? Vielen Dank.
Amazing! Vielen Dank! –