y <- 1:4
mean(y)
8 工作流:获取帮助
这本书并非一座孤岛;没有任何单一的资源能让你精通 R。 当你开始将本书中描述的技术应用于自己的数据时,你很快就会发现我们没有回答的问题。 本节将介绍一些获取帮助和持续学习的技巧。
8.1 谷歌是你的好朋友
如果你遇到困难,从谷歌开始。 通常,在查询中加上“R”就足以将其限制在相关的结果中:如果搜索结果没有用,通常意味着没有 R 特定的结果可用。 此外,添加像 “tidyverse” 或 “ggplot2” 这样的包名也会帮助你将结果范围缩小到你更熟悉的代码,例如,“how to make a boxplot in R” (如何在 R 中制作箱线图) vs. “how to make a boxplot in R with ggplot2” (如何用 ggplot2 在 R 中制作箱线图)。 对于错误信息,谷歌尤其有用。 如果你得到一个错误信息,并且你不知道它是什么意思,试试谷歌搜索它! 很可能过去有人也曾对此感到困惑,网上某个地方会有帮助。 (如果错误信息不是英文的,运行 Sys.setenv(LANGUAGE = "en")
并重新运行代码;你更有可能为英文错误信息找到帮助。)
如果谷歌没有帮助,试试 Stack Overflow。 首先花点时间搜索现有的答案,记得加上 [R]
,将你的搜索限制在使用 R 的问题和答案上。
8.2 制作一个可复现示例 (reprex)
如果你的谷歌搜索没有找到任何有用的东西,那么准备一个 reprex,即最小可复现示例 (minimal reproducible example) 是一个非常好的主意。 一个好的 reprex 能让其他人更容易帮助你,而且通常你会在制作它的过程中自己找出问题所在。 创建 reprex 有两个部分:
首先,你需要让你的代码可复现 (reproducible)。 这意味着你需要捕获所有东西,即包含任何
library()
调用并创建所有必要的对象。 确保你做到这一点的最简单方法是使用 reprex 包。其次,你需要让它最小化 (minimal)。 剥离掉所有与你的问题不直接相关的东西。 这通常涉及到创建一个比你在现实生活中面对的要小得多、简单得多的 R 对象,甚至使用内置数据。
这听起来像很多工作! 而且确实可能如此,但它有巨大的回报:
80% 的情况下,创建一个优秀的 reprex 会揭示你问题的根源。 令人惊讶的是,编写一个独立的、最小化的例子的过程,常常能让你自己回答自己的问题。
另外 20% 的情况下,你将以一种便于他人上手的方式捕捉到你问题的本质。 这大大提高了你获得帮助的机会!
当手动创建 reprex 时,很容易不小心漏掉某些东西,这意味着你的代码无法在别人的电脑上运行。 通过使用 reprex 包可以避免这个问题,该包是作为 tidyverse 的一部分安装的。 假设你将这段代码复制到剪贴板上(或者,在 RStudio Server 或 Cloud 上,选中它):
然后调用 reprex()
,其默认输出是为 GitHub 格式化的:
reprex::reprex()
一个渲染精美的 HTML 预览将显示在 RStudio 的 Viewer 窗格中(如果你在 RStudio 中)或你的默认浏览器中。 reprex 会自动复制到你的剪贴板(在 RStudio Server 或 Cloud 上,你需要自己复制):
``` r
y <- 1:4
mean(y)
#> [1] 2.5
```
这段文本以一种特殊的方式格式化,称为 Markdown,可以粘贴到像 StackOverflow 或 Github 这样的网站上,它们会自动将其渲染成代码的样子。 这是该 Markdown 在 GitHub 上渲染后的样子:
y <- 1:4
mean(y)
#> [1] 2.5
其他任何人都可以立即复制、粘贴并运行它。
要使你的示例可复现,你需要包含三件事:所需的包、数据和代码。
包 应该在脚本的顶部加载,这样可以很容易地看到示例需要哪些包。 这是一个检查你是否正在使用每个包的最新版本的好时机;你可能发现了一个自你安装或上次更新包以来已经修复的错误。 对于 tidyverse 中的包,最简单的检查方法是运行
tidyverse_update()
。-
包含数据的最简单方法是使用
dput()
来生成重新创建它所需的 R 代码。 例如,要在 R 中重新创建mtcars
数据集,请执行以下步骤:- 在 R 中运行
dput(mtcars)
- 复制输出
- 在 reprex 中,输入
mtcars <-
,然后粘贴。
尽量使用能揭示问题的最小数据子集。
- 在 R 中运行
-
花一点时间确保你的代码易于他人阅读:
确保你使用了空格,并且你的变量名既简洁又信息丰富。
使用注释来指出你的问题所在。
尽力删除所有与问题无关的内容。
你的代码越短,就越容易理解,也越容易修复。
最后,通过启动一个新的 R 会话并复制粘贴你的脚本,来检查你是否真的创建了一个可复现的示例。
创建 reprex 并非易事,需要一些练习才能学会创建好的、真正最小化的 reprex。 然而,学会提出包含代码的问题,并投入时间使其可复现,将随着你学习和掌握 R 的过程而持续带来回报。
8.3 投资自己
你也应该花一些时间在问题发生前就做好解决问题的准备。 每天投入一点时间学习 R,从长远来看将获得丰厚的回报。 一种方法是在 tidyverse 博客上关注 tidyverse 团队的动态。 为了更广泛地了解 R 社区,我们推荐阅读 R Weekly:这是一个社区项目,每周汇总 R 社区最有趣的新闻。
8.4 总结
本章结束了本书的“全局概览”部分。 你现在已经看到了数据科学过程中最重要的部分:可视化、转换、整理和导入。 现在你对整个过程有了整体的看法,我们将开始深入探讨各个小部分的细节。
本书的下一部分,“可视化”,将更深入地探讨图形语法和使用 ggplot2 创建数据可视化,展示如何使用你目前学到的工具进行探索性数据分析,并介绍为沟通交流创建图表的良好实践。