小编JHo*_*Hou的帖子

R Shiny:修改选择后保持/保留无功输入的值

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

例如:

我最初从"Letters"selectInput中选择"A","B"和"C",然后选择"1"; "1","2"; 和由"A","B"和"C"生成的动态生成的selectInput选项中的"1","2","3".

初始选择:

初始选择

然后我想在"Letters"selectInput选项中修改我的选择,以便只选择"A"和"B"(即,我删除"C").在这之后,为"A"生成的所有值和为"B"生成的所有值(即"1"为"a";"1"和"2"为"b")被重置.

a和b的重置(空)值:

a和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)})

# …
Run Code Online (Sandbox Code Playgroud)

r shiny

6
推荐指数
1
解决办法
1549
查看次数

标签 统计

r ×1

shiny ×1