используйте reactivePoll для отслеживания смены папки - PullRequest
0 голосов
/ 06 августа 2020

Я новичок в shiny и пытаюсь создать монитор папок на основе ответа @jdharrison на Используйте reactivePoll для накопления данных для вывода

Функция f1 или check, похоже на валидатор. Как только он дает какие-либо результаты, он запускает f2, истинный игрок. Затем мы визуализируем результат.

Во время выполнения образца игрушки f1 создает файлы, но не дает результата перечисления всех файлов, как ожидалось.

кстати, код работает на ubuntu, и файлы сохраняются в подкаталоге с именем temp

Где я go ошибся?

Хотел бы получить ваш совет.

runApp(
  list(
    ui =
      mainPanel(
        tableOutput("DT")
      ),
    server =
      function(input, output, session) {
        # f1 as a tempfile creater. Once it is called. it creates a txt
        f1 <- function() system(paste0("touch ", tempfile(tmpdir = "./temp", fileext = "txt")))

        # f2 list all the files
        f2 <- function(){
          list.files("temp", full.names = T) 
        }
        data <- reactivePoll(5000, session, f1, f2)
        output$DT <- renderTable(data())
      }
  )
)

Спасибо за предложение @TonioLiebrand. Функция проверки f1 - это в точности то, что она есть, функция проверки. Я сохраню сообщение здесь, возможно, когда-нибудь он кому-то поможет.

runApp(
  list(
    ui =
      mainPanel(
        DTOutput("DT")
      ),
    server =
      function(input, output, session) {
        f1 <- function() {
          system(paste0("touch ", tempfile(tmpdir = "./temp", fileext = "txt")))
          file.info(list.files("temp", full.names = T))["mtime"]
        }
        f2 <- function(){
          list.files("temp", full.names = T) %>% as.matrix()
        }
        
        data <- reactivePoll(5000, session, f1, f2) 
        
        output$DT <- renderDT({datatable(data())})
      }
  )
)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...