刷新checkbox输入控件

时间:2018-02-20 05:20:18

标签: r shiny

我的UI中定义了一个复选框控件,它从目录中读取excel文件并显示加载。用户选择文件并定义了一个函数,将其数据加载到数据框中。

我面临的问题是,一旦应用程序启动,目录中的任何文件的添加/删除都不会反映到复选框中,即始终显示在应用程序开始时读取的文件。 请分享任何解决方案。

此致

1 个答案:

答案 0 :(得分:0)

这是一个可能的选择。我们每秒使用invalidateLater(1000)使观察者无效,我们使用reactiveVal来跟踪当前作为selectInput中选项的文件,因此我们只在文件发生变化时才重新呈现输入。希望这有帮助!

enter image description here

library(shiny)

ui <- fluidPage(
  selectInput('input1','Files: ', NULL)
)

server <- function(input,output, session)
{
  # To keep track of current files
  prev.files<-reactiveVal(NULL)

  observe({
    invalidateLater(1000)
    isolate({
      new_files <- list.files()
      # If files have changed...
      if(!isTRUE(all.equal(new_files,prev.files())))
      {
        print('Updating selectInput')
        updateSelectInput(session,'input1',choices=new_files) # update selectInput
        prev.files(new_files) # Update prev.files()
      }
    })
  })
}

shinyApp(ui,server)