闪亮:多个 selectizeInput,一个选择向量,离散选择?
Shiny: multiple selectizeInput, one choice vector, discrete choices?
闪亮的新手。希望有人能帮助我。
我有几个来自同一向量的 selectizeInput 绘图选项。我的目标是让值在被选择后不显示在其他输入中。 IE。如果在输入 2 中选择了值 1,则它不应在输入 1、3 或 4 中可用。
ui<- shinyUI(fluidPage(
titlePanel("Selectize Test"),
sidebarPanel(
selectizeInput(
"groupoptions1", "Group 1", choices = NULL, multiple = TRUE
),
selectizeInput(
"groupoptions2", "Group 2", choices = NULL, multiple = TRUE
),
selectizeInput(
"groupoptions3", "Group 3", choices = NULL, multiple = TRUE
),
selectizeInput(
"groupoptions4", "Group 4", choices = NULL, multiple = TRUE
)
),
mainPanel(
htmlOutput("grouplist")
)
))
server<- shinyServer(function(input, output, session) {
groupdata <- reactive({
as.vector(1:30)
})
observe({
updateSelectizeInput(session, "groupoptions1", choices = groupdata())
updateSelectizeInput(session, "groupoptions2", choices = groupdata())
updateSelectizeInput(session, "groupoptions3", choices = groupdata())
updateSelectizeInput(session, "groupoptions4", choices = groupdata())
})
output$grouplist <- renderPrint({
list(
match(input$groupoptions1, groupdata()),
match(input$groupoptions2, groupdata()),
match(input$groupoptions3, groupdata()),
match(input$groupoptions4, groupdata())
)
})
})
我试过为每个 selectizeInput 设置单独的选择向量来减去另一个的选择,但是每次该向量更新时,所有现有的选择都会被擦除。
非常感谢任何帮助!
您可以并且需要在使用所选参数更新选项输入时设置值:
updateSelectizeInput(session, "groupoptions1", choices = groupdata1(),
selected=c(2,3))
您需要根据需要调整该值。
我将您的示例缩减为两个列表并将所有相关部分移动到 observe
observe({
vals1<-input$groupoptions1
vals2<-input$groupoptions2
cat("updata input ")
cat(isolate(vals1))
cat(" | ")
cat(isolate(groupdata2()))
cat("\n")
updateSelectizeInput(session, "groupoptions1",
choices = as.vector(1:10)[! 1:10 %in% vals2],
selected=vals1)
updateSelectizeInput(session, "groupoptions2",
choices =as.vector(1:10)[! 1:10 %in% vals1],
selected=vals2)
})
闪亮的新手。希望有人能帮助我。
我有几个来自同一向量的 selectizeInput 绘图选项。我的目标是让值在被选择后不显示在其他输入中。 IE。如果在输入 2 中选择了值 1,则它不应在输入 1、3 或 4 中可用。
ui<- shinyUI(fluidPage(
titlePanel("Selectize Test"),
sidebarPanel(
selectizeInput(
"groupoptions1", "Group 1", choices = NULL, multiple = TRUE
),
selectizeInput(
"groupoptions2", "Group 2", choices = NULL, multiple = TRUE
),
selectizeInput(
"groupoptions3", "Group 3", choices = NULL, multiple = TRUE
),
selectizeInput(
"groupoptions4", "Group 4", choices = NULL, multiple = TRUE
)
),
mainPanel(
htmlOutput("grouplist")
)
))
server<- shinyServer(function(input, output, session) {
groupdata <- reactive({
as.vector(1:30)
})
observe({
updateSelectizeInput(session, "groupoptions1", choices = groupdata())
updateSelectizeInput(session, "groupoptions2", choices = groupdata())
updateSelectizeInput(session, "groupoptions3", choices = groupdata())
updateSelectizeInput(session, "groupoptions4", choices = groupdata())
})
output$grouplist <- renderPrint({
list(
match(input$groupoptions1, groupdata()),
match(input$groupoptions2, groupdata()),
match(input$groupoptions3, groupdata()),
match(input$groupoptions4, groupdata())
)
})
})
我试过为每个 selectizeInput 设置单独的选择向量来减去另一个的选择,但是每次该向量更新时,所有现有的选择都会被擦除。
非常感谢任何帮助!
您可以并且需要在使用所选参数更新选项输入时设置值:
updateSelectizeInput(session, "groupoptions1", choices = groupdata1(),
selected=c(2,3))
您需要根据需要调整该值。 我将您的示例缩减为两个列表并将所有相关部分移动到 observe
observe({
vals1<-input$groupoptions1
vals2<-input$groupoptions2
cat("updata input ")
cat(isolate(vals1))
cat(" | ")
cat(isolate(groupdata2()))
cat("\n")
updateSelectizeInput(session, "groupoptions1",
choices = as.vector(1:10)[! 1:10 %in% vals2],
selected=vals1)
updateSelectizeInput(session, "groupoptions2",
choices =as.vector(1:10)[! 1:10 %in% vals1],
selected=vals2)
})