我的UI中定义了一个复选框控件,它从目录中读取excel文件并显示加载。用户选择文件并定义了一个函数,将其数据加载到数据框中。
我面临的问题是,一旦应用程序启动,目录中的任何文件的添加/删除都不会反映到复选框中,即始终显示在应用程序开始时读取的文件。 请分享任何解决方案。
此致
答案 0 :(得分:0)
这是一个可能的选择。我们每秒使用invalidateLater(1000)
使观察者无效,我们使用reactiveVal来跟踪当前作为selectInput中选项的文件,因此我们只在文件发生变化时才重新呈现输入。希望这有帮助!
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)