R自动化生成报表里踩过的坑(二):taskscheduleR

跟着上一篇部署好R连Oracle以后,接着就是给windows布置一个任务让它自动运行R代码了。因为我不是学cs的,网上那些要在cmd里敲命令的教程我一个都没成功。找了很久,终于在stackoverflow上看到一篇帖子,介绍了taskscheduleR这个包。它最大的优点就是在Rstudio里有个Addin的界面,不需要敲命令,只要鼠标点点就好了,非常方便。

安装taskscheduleR需要通过github,没办法在CRAN里安装,而通过github安装需要fq,很坑爹,公司电脑不行,只得先用家里的mac把包下载下来。但这个包只能windows系统用,所以它检测到我是mac以后就自动删除了。没办法,只好请在国外的同学帮我下载,之后把library里这个包的文件夹压缩后发给我,我解压缩后放入对应的library目录下就可以正常使用了。它的github页面上有详细的操作说明,包括怎么安装Rstudio的插件,这里我就不赘述了。

但我还是碰到了问题。所有代码在Rstudio里正常运行无任何错误,但是用taskscheduleR启动就不行,报错也是莫名其妙的。经过过年前两天工作日断断续续的排查,终于发现又是encoding的锅。如上一篇所说,为了让RODBC读取的中文正常显示,需要将Rstudio的默认编码改为utf8,而windows的任务计划似乎是不支持utf8的。解决方法是,将生成报表的代码原封不动的保存(这里假设叫test.R),另开一个文件,写上一行代码:

source('test.R', encoding = 'utf-8')

将这行代码保存为R文件,然后在tasksheduleR里指定运行该文件即可。

同时需要注意的是,如果要通过rmarkdown生成文档,也要指定encoding为utf-8:

rmarkdown::render('test.Rmd', encoding = 'utf-8')

至此,R就可以非常顺畅地自动化运行报表了。在摸索的过程中,最大的感想就是encoding真是好大一个坑啊!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 我们组不久前申请到了一台windows服务器,除了装了系统什么都没有,于是自己配置了一下R连Oracle,以及JA...
    dingdingxia阅读 7,479评论 2 15
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,641评论 25 709
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,477评论 19 139
  • 说到这辈子说过最狠的话估计就是和老公吵架时候了,最最恶毒的想法就是你咋不去死呢?怎么不让车把你撞了呢?最好断...
    奔跑的的兔子2016阅读 1,209评论 0 0
  • 清晨,我早早起床 关掉贪睡的闹钟 独自倒一杯茶 今天茉莉,明日陈皮 中午,我打开电视 去餐厅买第一碗米饭 途中,可...
    立黄昏阅读 5,330评论 120 97