sidebarpanel div app r monitoring real-time

div - sidebarpanel shiny



Monitoreo de cambios en archivo(s) en tiempo real. (5)

Podría usar la función tclTaskSchedule en el paquete tcltk2 para configurar una función que verifique las actualizaciones y ejecute su código. Esto se ejecutará de forma regular (usted establece el tiempo) pero aún así le permitirá utilizar su sesión R.

Tengo un programa que controla ciertos archivos para el cambio. Tan pronto como el archivo se actualiza, el archivo se procesa. Hasta ahora he llegado con este enfoque general de entregar "análisis en tiempo real" en R. Esperaba que ustedes tengan otros enfoques. Tal vez podamos discutir sus ventajas / desventajas.

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) }


Si su sistema proporciona una API para monitorear los cambios del sistema de archivos, entonces debe usar eso. Creo que las Mac vienen con esto. Aunque no estoy seguro de otras plataformas.

Edit: un goog rápido me dio:

Linux - http://wiki.linuxquestions.org/wiki/FAM

Win32 - http://msdn.microsoft.com/en-us/library/aa364417(VS.85).aspx

Obviamente, estas API eliminarán cualquier sondeo que requiera. Por otro lado, puede que no siempre estén disponibles.

Java tiene esto: http://jnotify.sourceforge.net/ y http://java.sun.com/developer/technicalArticles/javase/nio/#6


Si tiene muchos archivos que desea monitorear, entonces R puede ser demasiado lento para este propósito. Vaya a su c: or / dir y vea cuánto tiempo lleva hacer file.info(dir(recursive = TRUE)) . Un script de dos o bash puede ser más rápido.

De lo contrario, el código se ve bien.


Similar a la sugerencia de usar una API del sistema, esto también se puede hacer usando qtbase (https://r-forge.r-project.org/R/?group_id=454) que será un medio multiplataforma desde 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")


Tengo un truco en mente: puede configurar un trabajo CRON / Tarea programada para ejecutar el script R cada n segundos (o lo que sea). El script R comprueba el hash del archivo y, si los hashes no coinciden, ejecuta el análisis. Puede usar la función digest::digest , solo echa un vistazo al manual.