使用cronR每小时执行脚本报错:file.exists(rscript) is not TRUE
解决cronR执行脚本时的"file.exists(rscript) is not TRUE"错误
你碰到的这个错误核心原因很明确:cronR找不到你指定的hackathon.R脚本文件,问题出在你使用system.file()的方式上——这个函数是专门用来查找R包内置的资源文件的,而你的脚本是自己本地的文件,根本不在cronR包的extdata目录里,所以肯定会返回文件不存在的错误。
下面是具体的解决步骤:
直接使用脚本的绝对路径,摒弃错误的
system.file用法
把你的代码改成这样,直接指定本地脚本的完整路径:library(cronR) # 直接写入你脚本的绝对路径,不需要借助system.file f <- "/Users/abhishekgupta/Documents/Personal/hackathons/mckinsey/hackathon.R" # 先提前验证文件是否存在,避免后续报错 if (file.exists(f)) { cmd <- cron_rscript(f) print(cmd) } else { stop("指定的脚本文件不存在,请仔细检查路径拼写或文件位置!") }先单独验证路径的正确性
你可以先在R控制台单独运行file.exists("/Users/abhishekgupta/Documents/Personal/hackathons/mckinsey/hackathon.R"),如果返回FALSE,说明:- 路径拼写有错误(比如大小写、单词拼写)
- 文件实际不在这个目录下
仔细核对这两点,确保路径完全正确。
添加每小时执行的定时任务(路径验证通过后)
确认文件存在后,就可以用cron_add()来设置定时任务了:# 添加每小时执行的任务,可自定义描述信息 cron_add(cmd, frequency = "hourly", description = "每小时自动运行hackathon脚本")
额外注意事项
- 尽量用绝对路径而不是相对路径,避免因为R工作目录变化导致找不到文件的问题。
- 确保你的
hackathon.R脚本本身能单独正常运行,没有语法或逻辑错误,不然定时任务执行时也会失败。
内容的提问来源于stack exchange,提问作者Abhishek Gupta
相关产品推荐
相关产品推荐

