The drake R package

The drake R package

drake 是一个 R 数据分析工作流程的工具包。旨在提高数据分析的效率和用于高性能计算。本文是其 README 的学习笔记,是个使用 drake 进行数据分析的小例子。关于这个包,未来计划学习:The drake R Package User Manual

首先我们需要准备两个文件:

raw_data.xlsx
report.Rmd

加载 R 包

1
2
3
library(drake)
library(dplyr)
library(ggplot2)

编写自定义函数

1
2
3
4
create_plot <- function(data){
ggplot(data, aes(x = Petal.Width, fill = Species)) +
geom_histogram()
}

检测需要的文件是否存在

1
2
3
4
file.exists('raw_data.xlsx')
#> [1] TRUE
file.exists('report.Rmd')
#> [1] TRUE

制定数据分析流程的计划

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
plan <- drake_plan(
raw_data = readxl::read_excel(file_in("raw_data.xlsx")),
data = raw_data %>%
mutate(
Species = forcats::fct_inorder(Species)
),
hist = create_plot(data),
fit = lm(Sepal.Width ~ Petal.Width + Species, data),
report = rmarkdown::render(
knitr_in("report.Rmd"),
output_file = file_out("report.html"),
quiet = TRUE
)
)
plan
#> # A tibble: 5 x 2
#> target command
#> <chr> <expr>
#> 1 raw_data readxl::read_excel(file_in("raw_data.xlsx"))
#> 2 data raw_data %>% mutate(Species = forcats::fct_inorder(Species))
#> 3 hist create_plot(data)
#> 4 fit lm(Sepal.Width ~ Petal.Width + Species, data)
#> 5 report rmarkdown::render(knitr_in("report.Rmd"), output_file = file_out("report.html"), quiet = TRUE)

执行计划

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
make(plan)
#> 5 outdated targets:
#> raw_data
#> data
#> report
#> hist
#> fit
#> Please read the "Interactive mode" section of the make() help file.
#> This prompt only appears once per session.
#> Really run make() instead of r_make() in interactive mode?
#> 1: yes
#> 2: no

#> Selection: 1
#> target raw_data
#> target report
#> target data
#> target hist
#> target fit

除了像 report.html 这样的文件,所有运行结果都被保存在 .drake 中。

查看计划执行结果

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 查看 data
readd(data)
#> # A tibble: 150 x 5
#> Sepal.Length Sepal.Width Petal.Length Petal.Width Species
#> <dbl> <dbl> <dbl> <dbl> <fct>
#> 1 5.1 3.5 1.4 0.2 setosa
#> 2 4.9 3 1.4 0.2 setosa
#> 3 4.7 3.2 1.3 0.2 setosa
#> 4 4.6 3.1 1.5 0.2 setosa
#> 5 5 3.6 1.4 0.2 setosa
#> 6 5.4 3.9 1.7 0.4 setosa
#> 7 4.6 3.4 1.4 0.3 setosa
#> 8 5 3.4 1.5 0.2 setosa
#> 9 4.4 2.9 1.4 0.2 setosa
#> 10 4.9 3.1 1.5 0.1 setosa
#> # … with 140 more rows

# 把 data 加载到内存中
loadd(data)

# 查看图片
readd(hist)

这个时候你就可以查找你的工作流程中的纰漏了,例如我们忘记给直方图设置封箱数量了,我们来修复这个错误:

1
2
3
4
5
6
create_plot <- function(data){
ggplot(data, aes(x = Petal.Width,
fill = Species)) +
geom_histogram(binwidth = 0.25) +
theme_ipsum(base_family = enfont)
}

drake 将会知道什么结果被影响了:

1
2
config <- drake_config(plan)
vis_drake_graph(config)

重新执行计划:

1
2
3
4
5
make(plan)
#> All targets are already up to date.

loadd(hist)
hist

可靠的可重复性

1
2
clean()
make(plan)

后记

感觉如果是着手大型数据分析项目,使用这个工作流程很不错,以后还要继续深入学习这个 R 包。

# R

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×