《高效R语言编程》4-高效工作流
2021-05-07 本文已影响0人
zd200572
这是《高效R语言编程》的学习笔记,前面的笔记在这里:
我们将实践、习惯、提升生产力的系统环境定义为工作流。项目管理和计划,这里使用DiagrammeR包。
高效工作流的5条高级技巧
类型
- 1、编码前头脑清晰,保证目标,可以用绝笔
- 2、制定计划
- 3、尽早选择要用的包
- 4、记录每个阶段的工作
- 5、尽可能使流程可复制,knitr可以帮助实现
项目规划类型
- 数据分析
重点是数据处理的速度。本人觉得是先实现呢 - 创建包
用户接口和用户文档,代码风格和审查,鲁棒性的测试也很重要 - 报告和发布
需要多少代码才能得到结论和会创建多少输出 - 应用
Shiny App或者嵌入到大型服务器中的的代码,健壮性和恰当地处理错误
具体i步骤
- 项目规划,做好计划
- 包选择
- 发布
项目规划与管理
准备充分可以减少工作,减少技术债务(不完全正确的代码推迟决策),当然,一次性代码大可不必这样。
可用的工具有从简单到复杂是,Github,Zenhub(与GitHub紧密配合,唯一的浏览器插件),类似Trello的网页工具,专用项目管理软件,企业级项目管理软件。
分而治之
模块化,项目分割。
使你的工作流更敏捷
SMART标准
- 明确(目标)
- 可衡量(结束指标)
- 可实现
- 实际情况(资源)
-
时间限制
项目计划有多种形式,比如甘特图,问题描述等等。
通过R可视化项目计划
项目进度绘图包:
- plan(进度图、甘特图)
- plotrix(甘特图)
install.packages("plotrix")
library(plotrix)
example(gantt.chart)
- DiagrammeR
较新的包,提供简单流程图的R接口,如mermaid和GraphViz。
library(DiagrammeR)
mermaid("gantt
Section Inition
Planning :a1,2020-05-06,10d
Data processing :after a1, 30d"
)
包的选择
低效、缺乏技术支持或过时的包会浪费不少时间,CRAN上有大量不好的包,易出错。使用R包可以避免重复造轮子,提高效率。
查找R包
首先是百度谷歌一下,其次,是R文档网站rdocumentation.org,也可以R命令搜索:
RSiteSearch('ggplot') #会自动用浏览器打开网页
如何选择R包
优先考虑性能、稳定性和易用性。几个推荐的判断标准:
- 1、是否成熟,版本号1.0以上一般更稳定
- 2、是否处于持续开发周期
- 3、完备的文档
- 4、是否广泛使用
MRAN和METACRAN两个网站可以帮助包的选择,下载量也是一个衡量指标。可以用这个网址查看https://cranlogs.r-pkg.org/badges/last-month/ggplot2
网页只有这么个简洁的信息
发布
文档化你的工作:动态报告与R包。
通过R Markdown生成动态文档
这个的优点是可以同时包括代码块和实时生成结果,示例如下:
1+1
echo=TRUE,是显示R代码;eval= TRUE,执行代码。
Ctrl+Alt+I可以方便插入代码块。
在文档第一个代码块设置如下,可以缓存第一次运行结果,减少构建时间:
knitr::opts_chunk$set(echo = TRUE)
opts_chunk$set(cache=TRUE)
R包
dummy package虚拟包,使用DESCRIPTION文件用于告知用户如何使用。创建包适合管理复杂项目,需要花费额外时间,devtools包让这个过程变得简单。当然,小型一次性项目还是不建议创建包。
R包的基本元素区别于其他R项目,下面是三条高效建议:
- 1、DESCRIPTION 包含了包的依赖信息,需要安装的其他包,例如Imports:
- 2、R/ 文件夹,包的所有R代码,模块化
- 3、data/ 文件夹包含示例代码,
devtools::use_data()可以自动将数据添加到你的包
,只要在包加载时配合了data("data_set_name")函数。
testthat包让测试更加容易,确保进程不中断。