最近在写毕业论文,我想把自己的R代码整理一下然后上传,用来“假装”自己确实做了一些东西,因此将R包的制作过程记录一下,分享给大家~也为自己以后参考留下一些资料~
之前在黄志洪老师的课上他曾布置过R包的额外作业,当时我和另外两个同学一起做了一个比较简单的贪吃蛇游戏R包,叫做Sokoban。但是当时R包打包工作时另一个同学工作的,因此这也是我第一次尝试打包工作!
注意一下我是在Windows下进行操作的,不同的平台可能会有不同。废话不多说,现在开始!
前期准备:
- 预备打入包中的函数;
- 版本为2.14.0以上的R;
- 合适版本的工具软件Rtools,下载链接,根据提示选择版本就可以;
- Latex编辑工具,在Rtools的下载页面中有Mitex的下载页面,我因为之前已经装了就跳过这一步;
- 设置环境变量
E:aaastudylatexmiktexmimiktexbinx64;E:aaastudyRRtoolsbin;E:aaastudyRR-3.5.0binx64
打包R包:
- 清空内存中所有对象,创建Rpackage文件夹,将Rscript放到文件夹下,并设置对应的工作目录,并读入需要打包的所有函数:
rm(list=ls())
setwd("E:/aaastudy/Rpackage")
source("****.R")
- 生成R程序包的框架,***为包名,将现在内存中的所有函数进行打包,创建出一个R包的框架:
package.skeleton(name="***",list = ls())
- 上述文件夹包含DESCRIPTION, NAMESPACE, Read-and-delete-me(需要删除)三个文件及man文件夹,需要编辑的有DESCRIPTION文档和man中MyFunction.rd(自己创建的函数)说明文档以及***.Rd(R包)说明文档。
- 描述全都改完后,将cmd切换到编写R包的目录并进行打包并进行检查,***_1.0.tar.gz是打包后得到的压缩包,也就是最后要向R Cran提交的文件。
rcmd build ***
rcmd check ***._1.0.tar.gz --as-cran
- 在检查的过程中可能会遇见一些报错,我把我遇到的情况记录如下:
- *Font ts1-zi4r at 540 not found Font ts1-zi4r at 540 not found
- *checking should be performed on sources prepared by 'R CMD build':rcmd后的对象应该是生成的压缩包
- * checking for unstated dependencies in examples ... NOTE
>> Warning: parse error in file ‘***-Ex.R’:这种时候一般是有字符或者代码的错误,你找到Rcheck文件夹里面的***-Ex.R文件,找到对应的行就可以查错了。 - R包的Title格式会有要求,check的时候按照要求改就好啦。
上传R包
- 首先在检查的过程中不能有任何ERROR!NOTE和WRANING要尽可能少。
- 最好将包现在本地进行测试。
rcmd INSTALL ***._1.0.tar.gz
- 将没有任何错误的包***.tar.gz上传到 The Comprehensive R Archive Network 根据提示填写信息即可,之后会自动发送一封确认邮件,确认就好了。
- 然后就是等啦,可以在R project中进行查看。
结语:
我编写的这个包并没有其他代码,如果用到了其它代码,可以参考在CRAN上发布自己的R包,另外,这种方法构建的R包是不能含中文字符的,但我在看官方的书Writing R Extensions 的时候看到了非英文字符的包的创建,有兴趣的可以自己看看。
参考文章:
炼数成金:如何制作自己的R包?
在CRAN上发布自己的R包
AI 技术讲座精选:如何创建 R 包并将其发布在 CRAN / GitHub 上?
Writing R Extensions