使用 R 和 Emacs 分析数据科学代码

Emacs 的多功能性和可扩展性将编辑器的全部功能带入数据科学代码编写中。
108 位读者喜欢这篇文章。
metrics and data shown on a computer screen

Opensource.com

早在 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 之间的接口。其他软件包,例如 Companyhighlight-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 表示 AltCommand 键的方式)。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 中查看输出,则需要将输出保存到磁盘并在单独的缓冲区中打开生成的文件。

Literate programming in Org mode, the ESS buffer, and graphics output.

图 1:Org 模式中的文学编程、ESS 缓冲区和图形输出的屏幕截图。

高级用法

本文简要介绍了在 Emacs 中使用 R。许多参数可以微调,使 Emacs 按照您的偏好运行,但在这里涵盖它们会占用太多空间。ESS 手册 详细描述了这些参数。您还可以使用其他软件包扩展功能。

Org 模式可以集成 R 代码,为文学编程提供高效的平台。如果您更喜欢使用 RMarkdown,Polymode 包可以满足您的需求。

Emacs 有各种软件包可以使您的编辑体验更高效。使用 Emacs 编写 R 代码的最佳之处在于,该程序不仅仅是一个 IDE;它是一个可塑的计算机系统,您可以将其配置为匹配您最喜欢的工作流程。

学习如何配置 Emacs 可能会让人望而生畏。快速学习的最佳方法是从分享其配置的人那里复制想法。Miles McBain 管理着一个 Emacs 配置列表,如果您想进一步探索在 Emacs 中使用 R 语言,它可能会很有用。

接下来阅读什么
Peter Prevos
Peter 是一位 水利工程师 和社会科学家,对分析数据充满热情。Peter 是澳大利亚地区一家自来水公司的经理,他在那里利用数据创造有价值的见解。

评论已关闭。

Creative Commons License本作品根据 Creative Commons Attribution-Share Alike 4.0 International License 许可发布。
© . All rights reserved.