第一部分入门 2
第1章 简介 2
1.1 开发理念 3
1.2 入门 3
1.3 约定 4
1.4 版本记录 5
第2章 包的结构 6
2.1 给包命名 6
2.1.1 命名的要求 6
2.1.2 命名的策略 6
2.2 创建一个包 7
2.3 RStudio项目 9
2.4 什么是包 12
2.4.1 源码包 12
2.4.2 压缩包 12
2.4.3 二进制包 13
2.4.4 已安装的包 15
2.4.5 内存中的包 15
2.5 什么是库 16
第二部分 包的组件 20
第3章 R代码 20
3.1 R代码的工作流程 20
3.2 组织函数 21
3.3 代码风格 21
3.3.1 对象名称 22
3.3.2 空格 23
3.3.3 花括号 24
3.3.4 行的长度 24
3.3.5 缩进 24
3.3.6 赋值表达式 25
3.3.7 注释指南 25
3.4 顶层代码 26
3.4.1 加载代码 26
3.4.2 R运行环境 27
3.4.3 何时需要副作用 28
3.4.4 S4类、泛型和方法 29
3.5 CRAN注记 29
第4章 包的元数据 31
4.1 依赖:包需要什么 32
4.1.1 版本 33
4.1.2 其他依赖 34
4.2 标题和描述:包是做什么的 34
4.3 作者:你是谁 36
4.4 许可证:谁能使用包 37
4.5 版本 38
4.6 其他域 39
第5章 对象文档 40
5.1 文档工作流程 41
5.2 另一个文档工作流程 42
5.3 roxygen注释 43
5.4 函数文档 45
5.5 数据集文档 47
5.6 包文档 47
5.7 类、泛型和方法的文档 47
5.7.1 S3 47
5.7.2 S4 48
5.7.3 RC 49
5.8 特殊字符 49
5.9 不要重复自己 50
5.9.1 从其他函数继承参数 50
5.9.2 在同一文件中为多个函数提供文档 51
5.10 文本格式参考 52
5.10.1 字符格式 52
5.10.2 链接 52
5.10.3 列表 52
5.10.4 数学符号 53
5.10.5 表 53
第6章 使用指南:长篇文档 54
6.1 使用指南工作流程 55
6.2 元数据 56
6.3 Markdown 56
6.3.1 章节 57
6.3.2 列表 57
6.3.3 内联格式 58
6.3.4 表格 58
6.3.5 代码 59
6.4 knitr 59
6.5 开发周期 62
6.6 写使用指南的建议 62
6.7 CRAN注记 63
6.8 下一步 63
第7章 测试 65
7.1 测试工作流程 66
7.2 测试结构 67
7.3 编写测试 70
7.3.1 测试什么 71
7.3.2 跳过测试 71
7.3.3 建立自己的测试工具 72
7.4 测试文件 73
7.5 CRAN注记 74
第8章 命名空间 75
8.1 动机 75
8.2 搜索路径 76
8.3 命名空间 78
8.4 工作流程 79
8.5 导出 80
8.5.1 S3 81
8.5.2 S4 81
8.5.3 RC 82
8.5.4 数据 82
8.6 导入 82
8.6.1 R函数 82
8.6.2 S3 83
8.6.3 S4 83
8.6.4 编译过的函数 83
第9章 外部数据 84
9.1 导出的数据 84
9.2 内部数据 86
9.3 原始数据 87
9.4 其他数据 87
9.5 CRAN注记 87
第10章 编译过的代码 88
10.1 C++ 88
10.1.1 工作流程 89
10.1.2 文档 90
10.1.3 导出C++代码 91
10.1.4 导入C++代码 91
10.1.5 最佳实践 91
10.2 C 92
10.2.1 .call()入门 92
10.2.2 .c()入门 94
10.2.3 工作流程 95
10.2.4 导出C代码 95
10.2.5 导入C代码 96
10.2.6 最佳实践 97
10.3 调试编译过的代码 97
10.4 makefile 99
10.5 其他语言 100
10.6 许可 100
10.7 开发工作流程 100
10.8 CRAN的问题 101
第11章 安装文件 102
11.1 包引用 103
11.2 其他语言 104
第12章 其他组成部分 105
第三部分 最佳实践 108
第13章 Git和GitHub 108
13.1 RStudio、Git和GitHub 109
13.2 初始设置 110
13.3 创建本地的Git仓库 111
13.4 查看改变 113
13.5 记录改变 114
13.6 提交的最佳实践 117
13.7 忽略文件 118
13.8 撤销一个错误 118
13.9 与GitHub同步 120
13.10 使用GitHub的好处 121
13.11 与他人合作 122
13.12 问题 124
13.13 分支 124
13.14 创建拉请求 125
13.15 向另一个仓库提交拉请求 127
13.16 审查和接受请求 129
13.17 更多内容 129
第14章 自动检查 131
14.1 工作流程 131
14.2 检查 132
14.2.1 检查元数据 132
14.2.2 包的结构 133
14.2.3 描述 134
14.2.4 命名空间 136
14.2.5 代码 136
14.2.6 数据 138
14.2.7 文档 139
14.2.8 演示 140
14.2.9 编译过的代码 140
14.2.10 测试 141
14.2.11 使用指南 141
14.3 使用Travis进行每次提交后的检查 143
14.3.1 基本配置 143
14.3.2 其他用途 144
第15章 发布包 145
15.1 版本号 145
15.2 向后兼容 146
15.3 提交过程 148
15.3.1 测试环境 149
15.3.2 检查结果 150
15.3.3 反向依赖 150
15.4 CRAN的政策 151
15.5 重要文件 152
15.5.1 README.md 152
15.5.2 README.Rmd 152
15.5.3 NEWS.md 153
15.6 发布 154
15.6.1 关于提交失败 154
15.6.2 二进制包编译 155
15.7 准备下一个版本 156
15.8 宣传包 156
15.9 祝贺你 157