使用R project来管理建造R项目并上传git
本文详述了如何用R project管理自己的项目,简单介绍了project的结构示例,以及如何使其与自己的git项目关联,并实现随时随地管理自己的项目并于他人共享。
# 建立属于自己的R项目
# 为什么要用R project
简单来说,使用R project的目的主要是为了复用和共享。读了三年生信方向的研究生,我发现我们这些初学者最大的问题就是理不清楚自己的代码和流程,大多数人选择是新建文件夹,把所有的脚本一股脑的丢进去,心细者将脚本再分分类再命个名,偷懒的可能就啥也不管了。作为后果,当后辈找我要脚本的时候,我可能要找个半天,然后回复他‘emm找不到了’;如果我一毕业,估计项目对于后来者的意义也是完全不大,反正换个数据估计就跑不下来了。整个项目基本全靠自己,没人也没法有人给提意见,跟人交流也很不方便,很多东西可能都靠心有灵犀了。 但是最近学习了R project这个东西,我发现是真心好用(准确来说是菜鸡发现了git的好用,建立Rproject说白了就是为了这个)。把自己的项目整个推送到gitlab上,然后但凡修改都能找到前后对比,改错了也能及时回滚,感觉贼舒服。这篇文章主要还是写给自己和师弟看,要保证自己项目的规范性。好了,废话不多,赶紧上手。
# 创建R project
流程a:file -> New Project -> New Directory -> New Project -> Directory name (建议底下两个全勾上,第一个帮你创建.git文件夹,第二个是非常好用的包管理工具) -> Create Project 流程b:file -> New Project -> Existing Directory -> 指定文件夹 -> Create Project (这方法属实不推荐,除了建了一个.Rproj等于啥也没干,需要自己初始化git,我还不如用第一种方法然后把文件全mv过来) 流程c:file -> New Project -> Version Control -> Git (svn 没用过不知道) -> Create Project (同样需要指定文件夹,还需要指定git clone的地址,用于已有git的情形) 接下来,可以打开.gitignore(如果有的话),把不想上传的文件和文件夹给ignore掉,比如数据文件和中间文件。
# R project的项目结构示例
└── my_project
├── src # 这部分用来装R函数或者其他的可执行文件
│ ├── bin # 可执行文件或者外程序包比如java包
│ └── scripts # R函数脚本
├── output # 输出数据 ignore
├── data # 数据文件,你不会想把这个上传git的,进.gitignore
│ ├── raw # 原始数据 ignore
│ └── processed #中间文件 ignore
├── reports # 报告,保存一些rmd生成的pdf/ppt,再也不用担心我的进展汇报啦
├── README.md # 项目简介
├── analysis.R # 调用函数的函数,需要的图表作为函数输出,结合rmarkdown舒服
├── .gitignore # who is ignored
├── all.rmd # rmarkdown,配合analysis.R,生成pdf报告挺不错的
├── require.R # 把用到的包都require一遍,以防万一
└── packrat # 里面主要存储安装包的信息(可选,这个文件夹通常挺大)。
2
3
4
5
6
7
8
9
10
11
12
13
14
15
packrat的原理搞不太懂,貌似是会把所有的包都给本地化,我深切的怀疑R包的可移植性,见仁见智。 注:.gitignore里添加文件夹必须加上/ ,比如data/
# 上传git
# 生成rsa key
流程:上方Tools -> Global Options -> Git/SVN -> Create RSA keys -> View public key 然后都跟着提示来,这样你就创建了一个用于SSH连接的RSA秘钥,复制之 。
# 注册一个git账号并添加秘钥
我用的自建gogs,so见仁见智,不会安装或者不会注册的可以百度之。 添加秘钥以gogs为例,账户设置 -> SSH设置 -> 增加秘钥 -> 把刚刚复制的秘钥粘上去,确认。 创建好对应的git repository(这步不能漏),下边会提示你如何初始化这个仓库。
# 推送R项目
进入terminal界面(没有的话Tools -> Terminal -> New Terminal),执行以下命令:
git config --global user.email "[email protected]"
git config --global user.name "Your Name"
2
遵循前面提到的提示,进行仓库初始化。之后再要推送可以执行以下命令:
git add .
git commit -m \'message\'
git push
2
3
message请简要描述本次的修改内容。 也可以在GIT按钮里使用对应的操作,此处不详述了。 两千字小作文终于写完了,再见,收藏夹吃灰把~