早在 2012 年,《哈佛商业评论》发表了一篇文章,宣称“数据科学家”是 21 世纪“最性感的工作”。从那时起,人们对数据科学的兴趣呈爆炸式增长。许多伟大的开源项目,例如 Python 和用于统计计算的 R 语言,促进了我们分析数据方式的快速发展。
我的职业生涯始于使用铅笔和纸,然后转向电子表格。现在,当需要从数据中创造价值时,R 语言是我的首选工具。Emacs 是我另一个最喜欢的工具。本文简要介绍如何使用 Emacs Speaks Statistics (ESS) 包开始在这个历史悠久的编辑器中开发 R 项目。
绝大多数 R 开发人员使用 RStudio IDE 来管理他们的项目。RStudio 是一个功能强大的开源编辑器,具有开发数据科学项目的专门功能。RStudio 是一个很棒的集成开发环境 (IDE),但其编辑功能有限。
使用 Emacs 编写数据科学代码意味着您可以访问这个可扩展编辑器的全部功能。我更喜欢使用 Emacs 进行数据科学项目,因为我可以在同一个应用程序中完成许多其他任务,从而充分利用这个历史悠久的编辑器的多功能性。如果您刚开始使用 Emacs,请先阅读 Seth Kenlon 的 Emacs 入门 文章。
为 R 设置 Emacs
Emacs 是一个几乎无限可扩展的文本编辑器,不幸的是,这意味着许多东西无法开箱即用。在您可以编写和执行 R 脚本之前,您需要安装一些软件包并配置它们。ESS 包提供了 Emacs 和 R 之间的接口。其他软件包,例如 Company 和 highlight-parentheses,有助于完成和平衡括号。
Emacs 使用 Lisp 的一个版本进行配置。下面的 Emacs Lisp 代码行安装了所需的扩展,并定义了让您入门的最小配置。这些行已针对 GNU Emacs 版本 26.3 进行了测试。
复制这些行并将其保存在 .emacs.d 文件夹中名为 init.el 的文件中。这是 Emacs 用于存储配置的文件夹,包括 init 文件。如果您已经有一个 init 文件,则可以将这些行附加到您的配置中。这个最小的配置足以让您入门。
;; Elisp file for R coding with Emacs
;; Add MELPA repository and initialise the package manager
(require 'package)
(add-to-list 'package-archives
'("melpa" . "https://melpa.org/packages/"))
(package-initialize)
;; Install use-package,in case it does not exist yet
;; The use-package software will install all other packages as required
(unless (package-installed-p 'use-package)
(package-refresh-contents)
(package-install 'use-package))
;; ESS configurationEmacs Speaks Statistics
(use-package ess
:ensure t
)
;; Auto completion
(use-package company
:ensure t
:config
(setq company-idle-delay 0)
(setq company-minimum-prefix-length 2)
(global-company-mode t)
)
; Parentheses
(use-package highlight-parentheses
:ensure t
:config
(progn
(highlight-parentheses-mode)
(global-highlight-parentheses-mode))
)
使用 R 控制台
要启动 R 控制台会话,请按 M-x R 并按 Enter 键(M 是 Emacs 表示 Alt 或 Command 键的方式)。ESS 将要求您指定一个工作目录,该目录默认为当前缓冲区所在的文件夹。您可以通过重复 R 命令在同一 Emacs 会话中使用多个控制台。
Emacs 为您的新 R 控制台打开一个新缓冲区。您也可以使用向上和向下箭头键转到上一行并重新运行它们。使用 Ctrl 和向上/向下箭头键来回收旧命令。
Company(“完成任何事情”)包管理控制台和 R 脚本中的自动完成功能。当输入函数时,屏幕底部的微型缓冲区会显示相关参数。当自动完成下拉菜单出现时,您可以按 F1 查看所选选项的帮助文件,然后再选择它。
highlight-parentheses 包的功能正如其名称所示。还有其他几个 Emacs 包可用于帮助您平衡代码中的括号和其他结构元素。
编写 R 脚本
Emacs 识别任何带有 .R 扩展名的缓冲区的 R 模式(文件扩展名区分大小写)。使用 C-x C-f 快捷键打开或创建一个新文件,然后键入路径和文件名。您可以开始编写代码并使用 Emacs 提供的所有强大的编辑技术。
有几个函数可用于评估代码。您可以使用 C-<return> 单独评估每一行,而 C-c C-c 将评估一个连续区域。按键 C-c C-b 将评估整个缓冲区。
当您评估某些代码时,Emacs 将使用任何正在运行的控制台,或要求您打开一个新控制台来运行代码。
任何绘图函数的输出都会显示在 Emacs 之外的窗口中。如果您希望在 Emacs 中查看输出,则需要将输出保存到磁盘并在单独的缓冲区中打开生成的文件。

图 1:Org 模式中的文学编程、ESS 缓冲区和图形输出的屏幕截图。
高级用法
本文简要介绍了在 Emacs 中使用 R。许多参数可以微调,使 Emacs 按照您的偏好运行,但在这里涵盖它们会占用太多空间。ESS 手册 详细描述了这些参数。您还可以使用其他软件包扩展功能。
Org 模式可以集成 R 代码,为文学编程提供高效的平台。如果您更喜欢使用 RMarkdown,Polymode 包可以满足您的需求。
Emacs 有各种软件包可以使您的编辑体验更高效。使用 Emacs 编写 R 代码的最佳之处在于,该程序不仅仅是一个 IDE;它是一个可塑的计算机系统,您可以将其配置为匹配您最喜欢的工作流程。
学习如何配置 Emacs 可能会让人望而生畏。快速学习的最佳方法是从分享其配置的人那里复制想法。Miles McBain 管理着一个 Emacs 配置列表,如果您想进一步探索在 Emacs 中使用 R 语言,它可能会很有用。
评论已关闭。