90

RStudio 中是否有自动格式化代码的可能性?

我找到了这个,但它没有与 RStudio 连接。

还希望它是可定制的格式。

4

6 回答 6

76

更新:2018 年 6 月 22 日

谢谢@Lorenz@kirill@yuhi 的styler 包裹。我已经使用了一段时间。安装包后最简单的就是使用

滚动到Addin --> style active file

通过界面的自定义选项可以对我们喜欢的样式进行一些控制。

Rstudio 现在可以格式化代码以使其看起来整洁。选择感兴趣的行,然后导航到Code>>Reformat code或使用键盘快捷键Ctrl++ 。ShiftA

或者只是运行 style directory 命令来设置目录中所有文件的样式。

styler::style_dir()

update:这是重新构造代码的好方法,但它会中断,向量的元素。对于少数人来说,这是可以的,但是将许多元素传递给向量,这就有点过分了:

x <- c(
  "p.G12C",
  "p.F121S",
  "p.P124S",
  "p.P124L",
  "p.E13D",
  "p.E203K",
  "p.Q209P",
  "p.Q209P",
  "p.Q209L"
)

更新:R-Studio 版本 0.99.893

R-studio 添加了一项新功能Addins。此插件的一部分,现在您可以将@yuhi formatR 添加为插件。与内置的code >> Refromat code. 但是,Addin 的缺点是Reformat R Code它会为 Rshiny 代码引发错误。

于 2016-01-18T13:44:40.127 回答
52

首先CTRL+ A,然后CTRL+ SHIFT+ A

于 2017-09-02T10:39:32.267 回答
34

转到Code菜单并选择

重新缩进线

在我的操作系统下,这有快捷键Ctrl+ I

于 2013-03-29T12:48:32.163 回答
27

样式器可以格式化 R 代码,您可以通过 RStudio 插件访问它,该插件允许格式化活动文件、突出显示的代码、包等。一个显着的特点是它的灵活性,因为根据样式指南的代码转换与指定样式指南是分开完成的。这允许根据任意样式指南进行样式设置。从 1.2.0 版开始,这也适用于插件。

我们实现了tidyverse 样式指南,同时在样式方面提供了相当大的灵活性。此外,管道、tidyeval 语法等也得到了正确处理。您可以阅读这篇博文中的介绍。

如果您不想遵循 tidyverse 样式指南,可以查看小插图“Customizing Styler”,它描述了如何实现任意样式指南。在这个小插曲中,我将展示如何实现由一条规则组成的样式指南:始终在{. 希望有帮助。

披露:我是 styler 的维护者。

于 2017-12-14T11:04:33.013 回答
14
#use the library "formatR"

install.packages("formatR")

library(formatR)

# tidy_eval("file path")
tidy_eval("C:/Users/PC_name/Desktop/myfile.R")
于 2014-11-04T07:22:43.967 回答
0

添加到已经给出的好答案:您可以将该styler包与shrtcts包结合使用,以启用RStudio 仍不正式支持的Format on Save

  1. 使用shrtcts::edit_shortcuts()RStudio 控制台中的命令打开定义自定义快捷方式的文件。

  2. 将以下代码粘贴到该文件中(在该@shortcut行中设置您的首选键绑定)。

    #' Format on Save
    #'
    #' @description
    #'   Format Document with styler Package and Save Document.
    #' @interactive
    #' @shortcut Cmd+S
    function() {
      # format only .R and .Rmd files, but save all file types
      file_type <- tools::file_ext(rstudioapi::getActiveDocumentContext()$path)
    
      if (file_type %in% c("R", "Rmd")) {
        styler:::style_active_file() |>
          capture.output() |>
          invisible()
      }
    
      rstudioapi::documentSave() |>
        capture.output() |>
        invisible()
    }
    

    此解决方案使用本机管道|>,因此需要R 4.1. 当然,您可以只在每一行中定义单独的变量,或者 magrittr如果您使用早期版本的R.

  3. 使用shrtcts::add_rstudio_shortcuts(set_keyboard_shortcuts = TRUE)RStudio 控制台中的命令添加新的快捷方式及其分配的键绑定。然后重新启动 RStudio。

使用此配置,按下Cmd+S将活动.R.Rmd文档与styler包一起格式化,然后保存格式化的版本。.md所有其他类型的文件都无需格式化即可保存,但您可以轻松地使用可以格式化 eg或.pyfiles的包来扩展上面的代码。

存在这种方法代码没有达到预期效果的情况,例如它不适用于新Untitled文件或当前R会话繁忙时。

于 2022-03-03T18:07:57.320 回答