R语言

R基础 | 学会使用R project及R项目结构示例

2019-07-26  本文已影响0人  琼脂糖

当我们分析项目的时候,最好是用文件夹+Project的形式来组织内容。

从零新建R项目

如果是比较大的分析项目最好在一开始就保存为一个rproject。

  1. 右上角Project右侧倒三角,菜单中点击New Project可以创建新项目。


    image.png

    横线下面的是已经创建过的项目名,可以点击切换到其他项目。

  2. 创建新项目时需要指定一个文件夹,最好是一个新的文件夹。以后产生的R代码,图片都会默认存在这个文件夹下。

从存在文件夹创建R项目

  1. 打开RStudio 点击 File -> New Project....
  2. 选择Existing Directory
  3. 点击 Browse ,找到自己的项目文件夹
  4. 最后点击 Create Project.

R项目结构示例

一个基本的结构如下:

.
└── my_awesome_project
    ├── src
    ├── output
    ├── data
    │   ├── raw
    │   └── processed
    ├── reports
    ├── README.md
    ├── analysis.R 
    └── .gitignore
image.png

data文件夹

按需求可有这些子文件夹

src 文件夹

因为可能会有其他非R脚本,因此文件夹不写作R。
脚本组织方式:

  1. library模式:按照分析内容的不同来分成不同子文件夹(ETL,transformation,plotting)。
  2. pipeline模式:有一个主要的runner script,将所有脚本按顺序执行。
    无论哪种方式,都要将函数定义和应用分开。也就是说,只有pipeline或runner scripts用来执行函数,其他的都是定义函数的。
    另外脚本的组织可以视项目大小定。
library(some_package)
library(some_other_package)
source("R/functions.R")
source("R/utilities.R")

output文件夹

一般把输出图放在output/plots下面。

reports文件夹

报告pdf放在reports/下面,reporting code放在src下面。

requirements and general settings

如果只是用某个包中的某个函数,不需要library整个包。package::function(arg1, arg2, ...)就可以了。
可以有一个requirements.R, 在所有脚本前执行。这个脚本中放一些基础设置,比如locale。还有CRAN install check。但更建议用Packrat。

## This is our requirements.R script
## TODO : include an `InstalledPackage` fallback
require(googleAnalyticsR)
require(lubridate)
require(dataframes2xls)
require(ggthemr)
require(plyr)
require(dplyr) # need to load plyr before dplyr & not the other way!
require(tidyr)
require(stringr)
# require(bigQueryR)
require(janitor)

packrat

与别人分享代码的时候,常常由于每个人机器上的R版本以及安装的R包的版本不一致,导致程序无法运行,常常看到的错误信息是,你所运行的R包不支持3.X.X版本。将自己项目使用的包打包,这样别人就可以顺利的复现自己的结果了。
packrat的优点:

checkpoint

checkpoint可以

创建和使用的代码是一样的。快照信息存在~/.checkpoint

library(checkpoint)
checkpoint("2015-04-26")

这两行代码放在自己的脚本的最上面。

两个包的区别

checkpoint基于server端,因此负担不在用户这里,而在服务器上。服务器每天会记录当天R所有包的版本号。代码创建者只需要记录快照日期,而使用者通过快照日期就可以安装和创建者版本一致的R包。

Packrat需要用户远程数据同步自己的Packrat文件和代码给另一个用户。 这是一个很繁重的过程。 但对于包的版本不是更新到同一天,或者有些包不在CRAN上面(github),那么packrat更适用。

参考

  1. R项目示例
  2. Beyond Basic R – Introduction and Best Practices
  3. Using-Projects
  4. structuring-r-projects/
  5. a-truly-reproducible-r-workflow
  6. checkpoint
    )
  7. packrat
上一篇下一篇

猜你喜欢

热点阅读