在反应上下文中监视目录中 files/folders 数量的好方法是什么?
What's a good way to monitor the number of files/folders in a directory in a reactive context?
这是我在闪亮的应用程序中尝试做的事情的简化版本:
## run a script that creates subdirectories
system('Rscript /path/to/dir/dir_generating_script.R')
## observe path and count new directories created
observe({
d_count <- list.dirs("/path/to/dir") %>% length()
showNotification(paste0(
"Current dir count: ", d_count
))
})
我在这里遇到的问题是通知消息没有更新,因为 d_count 正在更改,而脚本在后台 运行。该消息仅在脚本完成 运行 时更新,但我希望在 运行 时看到计数递增。有没有更好的方法来被动地监视目录?
您可以使用 reactivePoll()
创建一个定期检查的反应文件计数(此处为 1 秒):
library(shiny)
library(tidyverse)
ui <- fluidRow(verbatimTextOutput("result"))
server <- function(input, output, session) {
file_count <- function() {
list.dirs(".", full.names = FALSE, recursive = FALSE) %>%
length()
}
current_file_count <- reactivePoll(1000, session, file_count, file_count)
output$result <- renderText(current_file_count())
}
shinyApp(ui = ui, server = server)
这是我在闪亮的应用程序中尝试做的事情的简化版本:
## run a script that creates subdirectories
system('Rscript /path/to/dir/dir_generating_script.R')
## observe path and count new directories created
observe({
d_count <- list.dirs("/path/to/dir") %>% length()
showNotification(paste0(
"Current dir count: ", d_count
))
})
我在这里遇到的问题是通知消息没有更新,因为 d_count 正在更改,而脚本在后台 运行。该消息仅在脚本完成 运行 时更新,但我希望在 运行 时看到计数递增。有没有更好的方法来被动地监视目录?
您可以使用 reactivePoll()
创建一个定期检查的反应文件计数(此处为 1 秒):
library(shiny)
library(tidyverse)
ui <- fluidRow(verbatimTextOutput("result"))
server <- function(input, output, session) {
file_count <- function() {
list.dirs(".", full.names = FALSE, recursive = FALSE) %>%
length()
}
current_file_count <- reactivePoll(1000, session, file_count, file_count)
output$result <- renderText(current_file_count())
}
shinyApp(ui = ui, server = server)