代码之家  ›  专栏  ›  技术社区  ›  phoney_badger

如何从命令行格式化R代码?

  •  0
  • phoney_badger  · 技术社区  · 6 天前

    我是新手 R 我试图在我的机器上设置一个最小的R开发环境。我想为R代码设置一个自动格式化程序,在保存时格式化我的代码(比如更漂亮、ruff或rustfmt)。

    在调查了这个问题之后,似乎 styler formatR 包似乎可以实现我想要的功能,但这些包提供了API来使用函数从R代码格式化文件。我想要的是一个命令行工具(如ruff或rustfmt),我可以用它设置一个钩子,在从编辑器(Neovim和Helix)保存时格式化我的文件。然而,在查看库的文档时,似乎都没有提供命令行实用程序。

    实际上,我想要的是从终端运行以下命令:

    toolname Rfile.R 
    

    并获取的格式化版本 RFile.R .

    有人对我如何着手此事有什么建议吗?任何帮助都将不胜感激。

    2 回复  |  直到 6 天前
        1
  •  1
  •   dog    5 天前

    创建一个文件rformat并使其可执行。

    #!/bin/sh
    Rscript -e "styler::style_file('$1')"
    

    授予其执行权限:

    chmod +x rformat
    

    使用它格式化文件:

    ./rformat my_script.R
    

    或使用 styleR -> install.packages("styler") 将以下脚本另存为 format.R :

    #!/usr/bin/env Rscript
    
    args <- commandArgs(trailingOnly = TRUE)
    
    if (length(args) != 1) {
      stop("Usage: format.R <file>")
    }
    
    file_path <- args[1]
    
    if (!file.exists(file_path)) {
      stop("File does not exist: ", file_path)
    }
    library(styler)    
    style_file(file_path)
    

    使其再次可执行

    chmod +x format.R
    

    然后跑

    ./format.R path/to/your/file.R
    

    为了将其与Neovim集成,您可以设置一个自动命令,以便在保存R文件时运行脚本。将以下内容添加到您的Neovim配置中 init.vim :

    autocmd BufWritePost *.R silent !./path/to/format.R %
    

    这也取决于你的IDE。对我来说最简单的方法是使用RStudio,标记所有内容(Ctrl+A)并自动设置所有内容的格式(Ctrl+Shift+A)。只需2秒,非常简单。您甚至可以与.rProfile文件混合,更改.last函数以自动设置目录中所有代码的格式。

        2
  •  -2
  •   andrewJames Ikram Bashir    6 天前

    尝试以下代码来编辑源代码:

    trace(corrplot, edit=TRUE)