新的闪亮,我希望我的应用程序显示目录中的所有文件,并在每次添加或删除文件时更新列表。我发现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())
)
因此,我只是不知道访问数据的热门,有人能指出我正确的方向吗?
答案 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
函数替换为您自己的函数。希望这有帮助!