在这个最小的例子中,我希望有一个选项可以选择不止一次,即产生输入值,例如: A,B,B,B,A,A,C
选项hideSelected = FALSE
使所选选项仍然可见,但无法再次选择。
根据https://github.com/rstudio/shiny/issues/518,选择中有这样的选项,但即使在这里我也找不到这样的选项:https://github.com/selectize/selectize.js/blob/master/docs/usage.md
server <- function(input, output, session) {
output$multipleSelect <- renderUI({
selectizeInput("selectMany",
label = "I want to select each multiple times",
choices = LETTERS[1:3],
multiple = TRUE,
options = list(hideSelected = FALSE))
})
}
ui <- function() {
fluidPage(
uiOutput("multipleSelect")
)
}
shinyApp(ui, server)
答案 0 :(得分:1)
由于Shiny还没有实现这一点,如果您想坚持使用selectInput
,解决方法是使用selectInput
,但每次用户制作时都会清除选择选择。然后,您可以放置另一个DT输出以显示当前选定的元素,并让用户从那里删除元素。我仅使用verbertimTextOutput
进行演示。
library(shiny)
ui <- fluidPage(
selectInput(
"selectMany",
label = "Many",
choices = LETTERS[1:3],
multiple = TRUE
),
verbatimTextOutput("debug")
)
server <- function(input, output, session) {
elements <- reactiveVal(c())
observeEvent(input$selectMany, {
req(input$selectMany)
elements(c(elements(), input$selectMany[[1]]))
})
observeEvent(elements(), {
req(elements())
updateSelectInput(session, "selectMany",
selected = character(0),
choices = LETTERS[1:3]
)
})
output$debug <- renderPrint({
print(elements())
})
}
shinyApp(ui, server)
答案 1 :(得分:0)
我想出了一些将不可见空间添加到选择列表的好主意。我还通过添加&#34;来欺骗选择。 &#34; beggining选项,解决了删除最后一个元素时缺乏反应性的问题。 这是一个很好的工作 - 在添加项目时非常出色。
仍有两个无法解决的问题:
代码:
library(ggplot2)
g <- ggplot(data=iris, aes(x=iris$Sepal.Length, y = iris$Sepal.Width))
g + geom_point()