Вы можете использовать функцию tclTaskSchedule в пакете tcltk2, чтобы настроить функцию, которая проверяет обновления и запускает ваш код. Затем он будет выполняться на регулярной основе (вы устанавливаете время), но все равно позволит вам использовать ваш сеанс R.

я есть программа, которая отслеживает определенные файлы для изменения. Как только файл обновляется, файл обрабатывается. До сих пор я придумал общий подход к проведению «анализа в реальном времени» в R. Я надеялся, что у вас, ребята, есть другие подходы. Может быть, мы можем обсудить их преимущества / недостатки.

monitor <- TRUE
start.state <- file.info$mtime # modification time of the file when initiating

while(monitor) {
  change.state <- file.info$mtime
  if(start.state < change.state) {
    #process
  } else {
    print("Nothing new.")
  }
  Sys.sleep(sleep.time)
}
 Gavin Simpson24 янв. 2011 г., 13:09
В общем, это может быть хорошо, но оно будет перегружать цикл событий R, пока вы не завершите цикл while. Например, он не будет работать в фоновом режиме, что позволит вам продолжить работу. Это нормально, если вы можете оставить процесс запущенным, но мне нравится ответ RScript задания cron, представленный ниже.
 Roman Luštrik24 янв. 2011 г., 17:36
@ Джеймс, это может быть выполнимо, но мне придется проверить.
 James24 янв. 2011 г., 14:03
Разве вы не можете вызвать вызов для запуска сценария R в том, что обновляет файл?

Ответы на вопрос(1)

Решение Вопроса

это также можно сделать с помощью qtbase (https://r-forge.r-project.org/R/?group_id=454), который будет кроссплатформенным средством изнутри R :

dir_to_watch <- "/tmp"

library(qtbase)
fsw <- Qt$QFileSystemWatcher()
fsw$addPath(dir_to_watch)

id <- qconnect(fsw, "directoryChanged", function(path) {
  message(sprintf("directory %s has changed", path))
})

cat("abc", file="/tmp/deleteme.txt")

Ваш ответ на вопрос