2017-03-01 58 views
4

有没有办法让R连续扫描新文件(在本例中为CSV)的工作目录,并且每当发现新文件已被添加到工作目录时,阅读它并执行一些(总是相同的)任务,然后返回到扫描新文件,直到我告诉它停止?不断扫描R工作目录中的新文件

+0

设置cron作业,这将在定期运行相同的脚本,或者使用无限循环,如:'而(TRUE){list.files()...如果有,请检查是否有新的,那么任务}'你可能想在while循环中引入暂停。 – zx8754

+0

你可以使用这个:https://github.com/bnosac/taskscheduleR – lbusett

+0

非常类似的问题:答案建议使用系统API或qtbase包。 http://stackoverflow.com/questions/4780632/monitoring-for-changes-in-files-in-real-time – neilfws

回答

2

我建议把它放在while循环中。

setwd("path_you're_interested_in") 
old_files <- character(0) 
while(TRUE){ 
    new_files <- setdiff(list.files(pattern = "\\.csv$"), old_files) 
    sapply(new_files, function(x) { 
     # do stuff 
    }) 
    old_files = c(old_files, new_files) 
    Sys.sleep(30) # wait half minute before trying again 
} 
+1

我做了一些非常大的编辑 - 循环现在只会查找带有新名称的文件,你不会当我们不知道OP想要做什么时,不需要数据表依赖项,'//对R中的注释不起作用,并且我暂停添加。 – Gregor

+0

@Gregor好点。感谢您的帮助 – Crt

+0

这工作完美,谢谢! –