gpt4 book ai didi

R Shiny : Keep/retain values of reactive inputs after modifying selection

转载 作者:行者123 更新时间:2023-12-04 11:19:17 26 4
gpt4 key购买 nike

在用户修改另一个 selectInput(multiple=T) 中的选择后,我试图将用户选择的值保留在动态生成的 selectInput 中。选项。每当我修改我的选择时,所有动态生成的值都会被重置。

例如:

我最初从“字母”选择输入中选择“A”、“B”和“C”,然后选择“1”; "1", "2";和“1”、“2”、“3”来自由“A”、“B”和“C”生成的动态生成的选择输入选项。

初始选择:

Initial Selections

然后我想修改我在“字母”选择输入选项中的选择,以便只选择“A”和“B”(即,我删除“C”)。执行此操作后,为“A”生成的所有值和为“B”生成的所有值(即,“a”为“1”;“b”为“1”和“2”)。

重置 a 和 b 的(空)值:

Reset (empty) values for a and b

删除 c(如果最初选择)后如何保留 a 和 b 的值?

library(shiny)

ui <- fluidPage(
sidebarPanel(
uiOutput("n1"),
uiOutput("n2")
),
mainPanel(
textOutput("Current"),
textOutput("Old")
)
)

server <- function(input, output, session){

output$n1 <- renderUI({
selectInput("no1", "Letters", choices=c("A", "B", "C"), multiple=T)
})

output$n2 <- renderUI({
if(!is.null(input$no1)){
lst <- vector("list", length(input$no1))
for(i in 1:length(lst)){
lst[[i]] <- selectInput(input$no1[i], input$no1[i], choices=c(1,2,3), multiple=T)
}
return(lst)
}
})

# observe({lk <<- reactiveValuesToList(input)})

Values <- reactiveValues(old="start")

session$onFlush(once=FALSE, function(){
isolate({ Values$old<-input$A })
})

output$Current <- renderText({paste(input$A)})
output$Old <- renderText({paste(Values$old)})

# observe({
# updateSelectInput(session, "A", "A", choices=c(1,2,3), selected=Values$old )
# })

}

shinyApp(ui,server)

最佳答案

我意识到这是一个相当老的帖子,但我相信这是你正在寻找的答案,如果你还没有找到它:

library(shiny)

ui <- fluidPage(
sidebarPanel(
uiOutput("n1"),
uiOutput("n2")
),
mainPanel(
textOutput("Current"),
textOutput("Old")
)
)

server <- function(input, output, session){

output$n1 <- renderUI({
selectInput("no1", "Letters", choices=c("A", "B", "C"), multiple=T)
})

output$n2 <- renderUI({
if(!is.null(input$no1)){
lst <- vector("list", length(input$no1))
for(i in 1:length(lst)){
lst[[i]] <- selectInput(input$no1[i], input$no1[i], choices=c(1,2,3), multiple=T)
}
return(lst)
}
})

#This is the added code
observe({
updateSelectInput(session, "A", "A",selected=lapply(reactiveValuesToList(input), unclass)$A )
updateSelectInput(session, "B", "B", selected=lapply(reactiveValuesToList(input), unclass)$B )
updateSelectInput(session, "C", "C", selected=lapply(reactiveValuesToList(input), unclass)$C )
})

}

shinyApp(ui,server)

关于R Shiny : Keep/retain values of reactive inputs after modifying selection,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38113507/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com