在RStudio中自动格式化R代码

mid*_*das 52 r autoformatting rstudio

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

我发现了这个,但它没有与RStudio连接.

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

use*_*203 48

更新:6月22日至2018年

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

滚动到 Addin --> style active file

通过界面定制选项可以控制我们喜欢的样式.

Rstudio现在可以将代码格式化为整洁.选择感兴趣的行,然后导航到Code>> Reformat code或使用键盘快捷键ctrl + shift + A.

更新:这是重新构造代码的好方法,但是它会,针对向量的元素进行分解.对于少数人来说这没关系,但是有很多元素传递给了一个向量,这是过度的:

x <- c(
  "p.G12C",
  "p.F121S",
  "p.P124S",
  "p.P124L",
  "p.E13D",
  "p.E203K",
  "p.Q209P",
  "p.Q209P",
  "p.Q209L"
)
Run Code Online (Sandbox Code Playgroud)

更新:R-Studio版本0.99.893

R-studio增加了一项新功能Addins.这个插件的一部分,现在你可以添加@yuhi formatR作为插件.这比构建代码更加整洁,更简洁code >> Refromat code.但是,Addin的缺点Reformat R Code是抛出了Rshiny代码的错误.


csg*_*pie 28

转到Code菜单并选择

Reindent Lines

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

  • 代码>重新格式化代码.Shift + CMD + A. (3认同)
  • 当然有一个捷径,我一直在使用“剪切”和“粘贴”来重新格式化...... (2认同)

lU5*_*5er 25

CTRL+ A,然后CTRL+ SHIFT+ A.


Lor*_*ert 13

样式器可以格式化R代码,您可以通过RStudio Addin访问它,允许格式化活动文件,突出显示的代码,包等.一个显着特点是它的灵活性,因为根据样式指南的代码转换与指定样式指南分开进行.这允许根据任意样式指南进行样式化.

我们已经实现了tidyverse风格指南,同时在样式上提供了相当大的灵活性.此外,正确处理管道,tidyeval语法等.您可以在此博客文章中阅读介绍.

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

披露:我是styler的维护者.


Ash*_*ish 10

#use the library "formatR"

install.packages("formatR")

library(formatR)

# tidy_eval("file path")
tidy_eval("C:/Users/PC_name/Desktop/myfile.R")
Run Code Online (Sandbox Code Playgroud)


小智 7

添加到已经给出的很好的答案:您可以将该包与shrtctsstyler包结合使用来启用“保存时格式化”,但RStudio 尚未正式支持该功能

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

  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", "qmd")) {
        styler:::style_active_file() |>
          capture.output() |>
          invisible()
      }
    
      rstudioapi::documentSave() |>
        capture.output() |>
        invisible()
    }
    
    Run Code Online (Sandbox Code Playgroud)

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

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

通过此配置,按下将Cmd+S活动文件.R.Rmd文档与styler包一起格式化,然后保存格式化的版本。.md所有其他类型的文件都在不格式化的情况下保存,但是您可以使用格式化例如或文件的包轻松扩展上面的代码.py

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