R 导入目录中最新的csv文件

R 导入目录中最新的csv文件,r,csv,import,automation,directory,R,Csv,Import,Automation,Directory,目标: -将最新文件(.csv)从本地目录导入R 目标详细信息: -csv文件每天都会上传到Mac上的文件夹中。我希望能够在我的R脚本中加入一个函数,自动将最新的文件导入到我的工作区中进行进一步分析。该文件每天早上4:30左右上传 -我希望这个功能在早上运行(不早于早上6点,所以这里有足够的时间留出余地) 输入详细信息: -文件类型:.csv -命名约定:示例文件名:“2014年7月28日04:37:47-0400.csv” -频率:每日输入@~04:30 我所尝试的: -我知道这似乎是一个软弱

目标:
-将最新文件(.csv)从本地目录导入R

目标详细信息:
-csv文件每天都会上传到Mac上的文件夹中。我希望能够在我的R脚本中加入一个函数,自动将最新的文件导入到我的工作区中进行进一步分析。该文件每天早上4:30左右上传
-我希望这个功能在早上运行(不早于早上6点,所以这里有足够的时间留出余地)

输入详细信息:
-文件类型:.csv
-命名约定:示例文件名:“2014年7月28日04:37:47-0400.csv”
-频率:每日输入@~04:30

我所尝试的:
-我知道这似乎是一个软弱的尝试,但我真的不知道如何修改下面的函数。
-我在纸上的想法是“抓取”最新文件的id,然后将其粘贴到目录名前面,然后是viola!(遗憾的是,我的编程技能无法在这里编写代码)
-下面的代码是尝试运行的代码,但它只是“挂起”并且没有完成。我从这里得到了这个密码

代码:

lastChange = file.info(directory)$mtime 
while(TRUE){ 
  currentM = file.info(directory)$mtime 
  if(currentM != lastChange){ 
    lastChange = currentM 
    read.csv(directory) 
  } 
  # try again in 10 minutes 
  Sys.sleep(600) 
} 
我的环境:
-R 3.1
-MacOSX10.9.4(小牛)

非常感谢您的帮助!:-)

--readfile.R--


阅读更多关于cron的信息

以下函数使用时间戳文件“跟踪”使用时间戳文件处理的文件。它可以在一个R实例中连续运行(如您第一次建议的),也可以通过单运行实例的方式运行,这有助于@andrew建议使用cron作业。(包含的
cat()
命令主要用于测试;可以随意删除。)

要使用@andrew对cron作业的建议,请在函数定义后附加以下行:

processDir()
。。。并使用类似于以下内容的crontab文件:

# crontab
0 8 * * * path/to/Rscript path/to/processDir.R

希望这有帮助。

使用
dplyr
/
magrittr

pacman::p_load(magrittr)

path <- list.files(path = directory,
                   pattern = "csv$",
                   full.names = TRUE) %>%
  extract(which.max(file.mtime(.)))
pacman::p_装载(magrittr)
路径%
提取(which.max(file.mtime(.))

你的意思是
列表.文件(目录)
?@andrew谢谢你这么做!我实际上添加了
setwd(directory)
,因为我的脚本将在默认工作目录之外工作。我注意到的另一种选择是使用
read.csv(粘贴(“目录/”,行名(文件)[order(files$mtime)][nrow(files)],sep=“”)
Oops,实现了一个小疏忽。将调用
list.files
中的
pattern='*.csv'
替换为
pattern=pattern
。它的工作原理是相同的,但使用模式调用
processDir
将无法按预期工作。我将对上面的内容进行编辑,以备将来参考。
processDir(loop = TRUE)
processDir()
# crontab
0 8 * * * path/to/Rscript path/to/processDir.R
pacman::p_load(magrittr)

path <- list.files(path = directory,
                   pattern = "csv$",
                   full.names = TRUE) %>%
  extract(which.max(file.mtime(.)))