R闪亮的反应文件列表

时间:2018-01-12 10:33:44

标签: r shiny

新的闪亮,我希望我的应用程序显示目录中的所有文件,并在每次添加或删除文件时更新列表。我发现reactivePoll可以实现这一点,所以我把它放在我的服务器中:

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

    has.new.files <- function() {
        length(list.files())
    }
    get.files <- function() {
        list.files()
    }
    output$files <- renderText(reactivePoll(10, session, checkFunc=has.new.files, valueFunc=get.files))    
}

但是,我不知道如何在我的ui中访问包含我的文件的字符向量。我也怀疑我服务器中的renderText是正确的选择。这是我的ui(非反应性,只读取一次文件列表):

ui <- fluidPage(

    ## How to access the files from server function ??
    selectInput("file", "Choose file", list.files())
)

因此,我只是不知道访问数据的热门,有人能指出我正确的方向吗?

1 个答案:

答案 0 :(得分:2)

你可以试试这个:

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

  has.new.files <- function() {
    unique(list.files())
  }
  get.files <- function() {
    list.files()
  }

  # store as a reactive instead of output
  my_files <- reactivePoll(10, session, checkFunc=has.new.files, valueFunc=get.files)

  # any time the reactive changes, update the selectInput
  observeEvent(my_files(),ignoreInit = T,ignoreNULL = T, {
    print(my_files())
    updateSelectInput(session, 'file',choices = my_files())
  })

}


ui <- fluidPage(
  selectInput("file", "Choose file", list.files())
)

shinyApp(ui,server)

每次添加,删除或重命名文件时都会更新selectInput。如果您只想在添加文件时更改它,则可以将has.new.files函数替换为您自己的函数。希望这有帮助!