原文链接 🔗 7 Do I Have To Use This Stuff?(opens new window)

📚 合集|社会科学的纯文本指南(opens new window)


draw-owl
如何画一头猫头鹰

无论安装还是设置,往往都比仅仅使用更困难,而且文档记录也更差 —— 珍妮定律(opens new window)

# 为什么还是这么烦?

用 R 进行数据分析,用 Markdown 或 RMarkdown 写文档,在 Emacs 或其他文本编辑器中同时做这两件事情;使用 Pandoc 处理文档;用 Git 追踪文档变化并使用(后台的)各种 Unix 工具和 …… 这听起来相当复杂,但这样做有四个主要优点:

  1. 首先,这些工具和应用都是完全免费的。在资金不足的情况下,完全可以试一试(时间是另外一回事,可能你不相信我,现在的你一定比以后更有时间。)
  2. 其次,这些工具都是开源项目,可用于 macOS、Linux 和 Windows 操作系统。可移植性非常重要,因为工具要在你的操作系统中长期使用,如果你更换了操作系统,以前的工作文件可以方便地进行转移。[1]
  3. 第三,这些工具允许你以一种可移植的、有记录和可重复的方式进行工作。
  4. 第四,工具之间可以紧密结合,相互配合。一切(包括版本控制)都可以在 Emacs 中运行,所有的工具都可以直接和其他工具一起工作或充分利用其他工具。

这些工具并非十全十美,它们可以为你做一些非常有用、非常重要的事情,但工具本身并不具备魔力。像在 Word 中写作的各种坏习惯一样,这些工具不会让你避免使用纯文本的坏习惯。工具虽然功能强大,学习起来却很乏味,但是你不必一开始就使用所有工具,或者马上开始学习所有内容,你真正需要开始做的唯一的事情就是立即做好备份。有许多方式可以全部或部分地尝试使用这些工具,你可以尝试先在任何文本编辑器中用 Markdown 写一些东西,也可以开始使用 R(opens new window) RStudio(opens new window) 。在项目开始时就做好修订控制效果会更好,最好是对项目的更改提交成为一种工作习惯,但是这种习惯需要在实践逐渐养成。

当然,你也许永远也不会用到这些软件。RMarkdown 和(特别是)Markdown 文档可以转换为许多其他格式,你的文本文件可以在其他任何文本编辑器和计算机中进行编辑。统计代码可移植性天生就不强,但 R 的开放性意味着它不可能很快变得过时或者无法使用。在日常使用中,你可能会发现文档刚开始都是纯文本,Markdown 格式的笔记记录在手机或电脑上,然后它们变成更长的 .md 文件,并加入了引用和图片等。如果你有合作者,或者到了向期刊投稿的时候,文档最终会迁移到 Word、Google Docs(opens new window) 或类似的工具中。

我之前提到的这些工具(Emacs、R、Pandoc、Git 等)有一个缺点,就是可能与你所在领域的其他人相比,你是一个少数派。但是在 R 中,这种情况越来越不适用,最新的 Git 等工具也是这样的。用 Markdown 写论文的人很少,大多数人使用 Microsoft Word 写论文,如果你与他人合作(我的意思是你不能对他指手画脚的人),这可能是一个问题。使用 Word 之类的应用,通常比让人们转移到纯文本工作流上来更加容易,如果迫不得已必须要使用 Word,那么在跟踪文档更改、管理数据分析的代码和输出结果时,至少你可以尝试并实践这里提到的一些原则。

# 替代工具也许更顺手

可能有很多其他的应用,早就在你的工作中很常用并且很重要。这具体取决于需求、个人偏好和付费意愿,或者在特定系统工作的依赖程度,特别是对于文本编辑,有非常多的选择。在 Mac 上,高质量的编辑器包括 BBEdit(opens new window) (受到许多 Web 开发人员的喜爱,但除了语法高亮之外对 R 的支持相对较少)和 TextMate(opens new window) ,如下方截图所示。在 Linux 上,Emacs 的标准替代方案是 Vi(opens new window) Vim(opens new window) ,以及很多其他的工具。对于 Windows,有 TextPad(opens new window) WinEdt(opens new window) UltraEdit(opens new window) Notepad++(opens new window) 。这些应用大多都对 有很好的支持,有些还可以进行统计编程。

textmate

在 TextMate 中编辑的 R 文件的一部分

Sublime Text 3(opens new window) 是一个正在积极开发的跨平台文本编辑器,其用户群正逐渐壮大。Sublime Text 快速、流畅,并且包含基于 Python(opens new window) 编程语言的强大插件系统。作为 Emacs 和 ESS 的替代品之一,Sublime Text 包含一个完善的 REPL(opens new window) ,允许在编辑器中轻松运行 R。[2] Sublime Text 售价为 70 美元。[3]

使用 R 的另一种方法(已经在本指南中多次提到),是使用 RStudio(opens new window) ,如下方截图所示。虽然讨论使用 RStudio 看起来很靠后,但它可能是你的首选方案。我在教学时使用 RStudio,它不是一个文本编辑器,而是一个「IDE(integrated development environment)」,即集成开发环境。代码、图片以及 R 的控制台,文档和其他输出都显示在 RStudio 窗口的不同窗格和选项卡中,数据和脚本文件通过各种窗口和菜单进行管理。RStudio 适用于 macOS、Windows 和 Linux,它集成了 R 的帮助文件,也可以很好地结合 knitr 和 Git。如上所述,RStudio 完全支持 RMarkdown,并可以非常轻松地生成 HTML,PDF 和其他格式。到目前为止,RStudio 是使用 R 最简单的方法,并且提供了一种简单的方式来管理这里讨论过的许多工具。

rstudio

在 Windows 上运行的 RStudio

对于社会科学的统计分析来说,R 的主要替代方案是 Stata(opens new window) 。Stata 是一个付费软件,但是像 R 一样,它用途广泛,功能强大,扩展性强,适用于所有主流操作系统,它拥有大量用户群体,为 Stata 作出贡献。在最新的版本中,Stata 的图形化能力和编辑器功能得到了很大的改进,像高亮 R 代码一样,ESS 也可以高亮 Stata 的 .do 文件,其他编辑器也可以与 Stata 一起使用。

近年来,Python(opens new window) 在社会科学中得到了越来越广泛的使用。Python 是一种通用计算语言,相对简单易学,与 R 或 Stata 差不多,Python 通常用于数据操作、剪切和数据清理,但它本身也越来越成为一个科学计算平台。SciPy(opens new window) 是一个非常有用的 Python 科学计算工具,可以从 Scipy 开始学习 Python 的功能。像 R 和 RMarkdown 一样,Python 通过 IPython Notebook(opens new window) [4] 等工具对文学编程提供了良好的支持,当然,Emacs 对使用 Python 也有很好的支持。

在社会科学家中,修订控制可能是我所讨论的工具中最不被广泛使用的。但是我相信,从长远来看,这是最重要的。虽然像 Git 这样的工具在概念上和实践中都需要一些时间来适应,但它们提供的功能非常有用,与前面讨论的大多数文本编辑器一起使用版本控制已经很容易了,还有像 Tower(opens new window) 这样的全能型 Git 客户端 ,可以不用命令行来实现 Git 操作。从长远来看,版本控制可能通过中间商的服务或者甚至作为操作系统基本功能的一部分,得到更加广泛的应用。[5]

# 更宽广的视角

如果所有你需要做的工作都有一些软件技巧和快捷方式,那就太好了,当然事实上,事情要比这复杂得多。为了写好一篇论文,你需要有条理地来阅读正确的文献,也许还要收集一些数据,最重要的是在最开始时提出一个有趣的问题,再多的软件也无法帮你解决这个问题,过分关注软件设置的细节反而会妨碍你的工作。确实,我在这里说的是我的经验,这种担忧本身就是一种自我施加的干扰,它在短期内缓解了与工作相关的焦虑,同时为以后的工作积累了更多的焦虑。[6]

在硬件方面,享乐跑步机存在着荒谬的生产力,由于某种原因,即使你所在的咖啡馆拥有的计算能力超过了 1965 年五角大楼的计算能力,你也很难完成待办事项。在软件方面,让人困扰的是,软件往往会浪费大量的时间来安装和更新,而且还会让人沉迷其中。[7] 更一般地说,高效的工作流程本身只是完成你真正感兴趣的项目、做你想做的事情、找到把你带进研究生院问题的答案的一种手段。创意的产生和项目管理的过程也可以很好地进行,甚至可能是项目中应该放在首位的业务。但是,这里不是提供建议的地方,我也不是提供建议的那个人。

以上所有这些只是为了重申两件事。首先,我并不是提倡你使用这些会让你更「有效率」的工具,而是它们可以帮助你控制并重现重要的工作,二者是明显不同的。如果你希望在数据分析中获得正确的答案,或者至少能够反复得到相同的错误答案,那么增强此类控制的工具肯定会吸引你。其次,即使有前面的警告,工作流管理原则仍然非常重要,软件只是达到目的手段,我所知道的 最聪明,最有效率的人之一(opens new window) —— David Lewis,他的工作有一半的时间是在打字机上打字,而另一半时间是在一台古老的 IBM 显示器(opens new window) 上写作,他的备用方案是在附近的壁橱里放一个备用显卡,以防第一个显卡坏了,但它从来没有坏过。


  1. 译者注:跨平台是很多人选择工具考虑的重要因素之一。对很多人来说,同时在 macOS、Windows 甚至 Linux 下工作越来越常见,再加上移动端的 iOS 和 Android,跨平台就显得愈加重要了。 ↩︎

  2. TextMate 也支持这种工作方式,但它的想法和实现略有不同。 ↩︎

  3. 译者注:Sublime Text(opens new window) 个人授权版官网售价 80 美元(2019 年 10 月 30 日) ↩︎

  4. 译者注:IPython Notebook 现在已改名为 Jupyter Notebook(opens new window) 。R Markdown 的作者谢益辉曾 吐槽(opens new window) Jupyter Notebook,还撰文比较过 R Markdown 和 Jupyter Notebook(opens new window) ,并把这种比较称为 The First Notebook War(opens new window) ↩︎

  5. 译者注:此处把双手举高高表示赞同🙌,并热切盼望能够实现👍 ↩︎

  6. 要了解更多,可以阅读 Merlin Mann 提出的 Inbox Zero(opens new window) ↩︎

  7. Mike Hall 精彩的论述 Org-Mode in your Pocket is a GNU-Shaped Devil(opens new window) ,很好地说明了这一点。 ↩︎