Rstudio制作package并发布到个人Github上,以及他人通过Github引用
看了看网上有关制作R package的文章,或者过于复杂,或者会出现一些自己遇到的新问题。在这里写一篇文章mark一下整个过程。
这是一段我自己写的R代码,假设你目前有一段可以实现某种功能的R代码,你想以后别人用起来比较方便,这当然不需要别人向你要源代码或者R包,只需要在他本人的RStudio控制台使用install_github()函数就能获得你的包。接下来是对 R包的开发者使用Github上传包,使用者如何下载等步骤的阐述。
制作包
RStudio——File——New Project——New Directory——R package
给R包命名,尽量顾名思义,别人引用起来也比较好理解。
这是Rstudio建立的一个包的模板,我们需要做的就是在这个基础上删改,加上我们的内容变成自己的包。这也是RStudio方便的一点,我自己在做的时候时候看了很多网上的文章,有些特别难,觉得做起来很复杂的,大概是使用R GUI去做,需要Rtools等工具,自己开发如何制作包,而RStudio是建立一个包,在原有包的基础上删改就可以。过程很简单。
我们有个刚建立的Rpackage这个基础包,进行修改就可以。在这个新打开的New Project右下角栏找到R文件夹——hello.R文件,这个文件需要放的就是你自己设计的R代码。
打开右下角栏Man文件夹——hello.Rd文件对你自己设计的代码写一些描述性的语言。(当然如果不修改,对你的R包的实现是完全不影响的,只是别人打开你这个包了解更详细的内容时才会看到)
接下来是对DESCRIPTION的修改(警告:此处容易出错)
红线部分出尽量不要修改,很容易报错,报错结果如下
要求安装额外的工具,也就是Rtools,你选择了Yes,仍然会出错
选择安装
安装完毕后,会报如上错误,看起来很复杂,其实只要不修改DESCRIPTION部分就没有问题。
这时修改部分结束
点击Build——Build&Reload,如果出现如下结果,证明制作成功。
一份完整的R package就制作完成了,你可以在当初建立的R package 目录下找到它。
把这个文件夹进行压缩,把压缩包给别人,让他选择如下步骤进行本地安装也是可以的,但是我们这里想介绍的是更简单的直接通过RStudio从Github下载的方法。
返回上一步,这时我们有一个完整的文件夹(例子里是CCD),包括.Rprog文件和DESCRIPTION文件。接下来需要做的就是上传到个人Github账户中
上传Github
首先你得有一个Github账户,去Github官网申请一个就好。
Start a Project
新建一个仓库repository,记得选上初始化README,这个文件可以是对R函数包的描述,或者是新建的这个仓库的描述。
在这里我们建立了一个叫做R_code的仓库,点击Upload files,将我们通过Rstudio制作好的函数包的文件夹拖到下图这里即可。
整个文件夹拖进来(点击蓝色choose部分只能上传单个文件)。
上传部分到这里就制作完毕了。
他人引用Github上的R包
想要直接在RStudio上引用Github上的R函数包,需要一些预装软件:RStudio、Rtools、Miketex(也有人说不装Rtools和Miketex也能成功引用,我的电脑上有这两个软件,所以不确定没有是否成功,可以先在没有预装软件的情况下试一下。)
外界设备准备完毕后,在RStudio中输入如下代码
值得注意的是红线部分,install_github("Sherlockin/R_code/CCD")这一部分不正确很容易出错,引号内部分别是所要引用的包开发者的Github用户名/仓库名/R包的名字。
因为我上传的R包存放到了一个仓库里,所以这里一定不能缺少仓库名,不然RStudio会报错,找不到R package。
最后总结一下这两天自己的研究成果
1、制作R package
在做包的过程中,网上有很多资料,但大部分还是停留在使用RGUI的较复杂的制作过程,不仅需要复杂的代码还需要额外的工具,这篇博客使用RStudio简化了过程,自己在做包的过程中遇到bug在网上找不到答案的,在这里也mark出来。
2、做好的R package 上传到个人Github账户
上传的Github的过程这里讲述的比较简单,但是我在学习的过程中更多的是看到大牛们使用系统命令CMD控制,输入代码直接上传文件到Github中,可能我刚接触Github对这些还不太熟悉,掌握的不太好,就使用傻瓜式的直接将文件夹拖进来。
在学习的过程中还有看到使用GIT工具,对GIT shell脚本文件进行更改就能上传文件的,较复杂,以后可以慢慢学。
3、他人使用Rstudio直接调用Github中的函数包
install.packages("devtools")
library(devtools)
install_github("Sherlockin/R_code/CCD")
library(CCD)
这里需要先从CRAN中下载“devtools”包,然后才可以使用install_github()函数,注意install_github()内部分别是github用户名/仓库名/R包名。然后就可以直接使用包内的函数了。