编写自己的 RStudio 插件

编写RStudio插件很容易,很有趣,而且只需几分钟! 好吧,这就是马库斯衰老研究所的朱浩最近在RStudio会议上说的 。 即使我经常使用它们,我什至没有想到要写一个。 因此,我决定尝试写一篇,看他是否正确。

我的第一个问题:使用插件可以完成什么工作? 根据RStudio的Jonathan McPherson所说,一个插件可以帮助您编写代码,格式化代码,与外部数据集成,启动脚本……基本上,常规R代码可以做的几乎所有事情。

下一个问题:它们的结构如何?

  • 插件是常规的R代码。 更具体地说,插件是R函数。 但不仅仅是任何功能:它必须以某种方式使用rstudioapi包; 这就是插件与RStudio IDE交互的方式。
  • 插件必须是R包的一部分。 它们不能是独立的功能。 他们需要一个包装结构。
  • 而且,插件需要包括一个.dcf文件,该文件应具有有关包中每个插件的信息-特定格式的元数据。

这是Zhu在RStudio会议上演示的令人惊讶的易于编写的插件函数:

open_server_guide <- function() {
  rstudioapi::viewer("https://ifar-connect.hsl.harvard.edu/using_rstudio_server/")
}

我将引导您完成如何构建另一个加载项的步骤:编辑RStudio R代码段文件。 该文件位于~/.R/snippets/r.snippets 。 您可以使用usethis::edit_rstudio_snippets()函数打开该文件进行编辑。 在RStudio菜单中深入几层; 或通过运行

file.edit(paste0(path.expand('~'),'/.R/snippets/r.snippets'))

但是,让我们看看如何使外接程序执行相同的操作。

首先,您需要一个R包来放入它。

您可以在RStudio中使用所需的大多数目录结构来设置新软件包,方法是选择“文件”>“新建项目”,选择一个新目录,然后选择“软件包”。 因为代码片段按其包的名称按字母顺序排列,并且我希望我的代码优先,所以我将我的包命名为asnippet。

你不能只用

file.edit(paste0(path.expand('~'),'/.R/snippets/r.snippets'))

在功能中打开摘要文件。 切记:代码段必须使用函数内的rstudioapi包与RStudio API进行交互。 因此,您可以编写一个函数,使用rstudioapi的callFun()帮助程序函数 file.edit() 命令发送到RStudio控制台

edit_snippets <- function(){
  rstudioapi::callFun("sendToConsole", "file.edit(paste0(path.expand('~'),'/.R/snippets/r.snippets'))")
}

这是执行简单操作的多步骤方法,但是可以将功能转换为插件的一种方法。 rstudioapi的callFun()调用RStudio函数。 哪个功能? 那是第一个参数:您要在此处调用的函数是sendToConsole 。 而且,顾名思义,这仅意味着您正在向控制台发送代码。 第二个参数是要发送到控制台的代码,在这种情况下,是打开摘要文件的file.edit()代码。

工作外接程序的最后一块是一个单独的.dcf文件:addins.dcf。 那是一个纯文本文件,它需要存放在名为inst的文件夹下的rstudio文件夹中。 设置程序包时,默认情况下不会创建这些文件夹,因此您需要手动创建它们。

每个插件的addins.dcf文件需要四行文本:名称,描述,绑定以及是否是交互式的。 名称是您要调用的插件。 描述可能相当明显。 绑定是插件的函数名称。 交互式是对还是错:RStudio需要知道插件是否将在等待用户输入。 在这种情况下,答案是错误的。

这是此插件的addins.dcf中的内容:

Name: Edit snippets
Description: Opens RStudio snippets file for editing
Binding: edit_snippets
Interactive: false

加载项的名称为“编辑代码段”,描述为“打开要编辑的RStudio代码段”,绑定(函数名称)为edit_snippets,并且不是交互式的。 而已。 现在,我只需要构建和加载程序包,您可以从右上方窗格中的“ RStudio构建”选项卡进行操作。

如果您已按照步骤进行操作,并查看了“加载项”下拉列表,则应该在asnippet(或任何您称呼的软件包)下看到Edit snippets。

RStudio插件下拉列表

RStudio的插件下拉列表

并且,如果您点击“编辑代码段”插件,您的代码段文件应弹出打开。

为什么要使用插件而不是仅手动运行函数? 插件的一个优点是您可以为其分配键盘快捷键。 选择“工具”>“修改键盘快捷键”,搜索您的代码段,单击名称旁边的,键入所需的键盘快捷键,然后按“应用”。 现在,如果您键入该组合键,您的代码段文件应弹出并进行编辑。

看来朱先生是对的!

From: https://www.infoworld.com/article/3336059/do-more-with-r-write-your-own-rstudio-addins.html

你可能感兴趣的:(编写自己的 RStudio 插件)