You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

formatR包中usage函数意外移除空格,如何实现参数分行格式?

解决formatR::usage()格式不符合预期的问题

使用formatR包的usage()函数时,会出现意外移除空格、输出的函数调用格式过于紧凑的问题。例如执行以下代码:

library(formatR)
library(tidyverse)
usage(
    FUN           = inner_join
  , width         = getOption("width")
  , tidy          = c(TRUE, FALSE)[1]
  , output        = c(TRUE, FALSE)[1]
  , indent.by.FUN = c(TRUE, FALSE)[2]
  , fail          = c("warn", "stop", "none")
)

得到的输出为:

inner_join(x, y, by = NULL, copy = FALSE, suffix = c(".x", ".y"), ..., keep = FALSE)

但实际期望的是每个参数单独一行并缩进的格式:

inner_join(
  x,
  y,
  by = NULL,
  copy = FALSE,
  suffix = c(".x", ".y"),
  ...,
  keep = FALSE
)

解决方案

  • 调整usage参数强制换行:将width参数设置为较小值,触发参数自动换行,同时保持tidy=TRUE:

    usage(
        FUN           = inner_join
      , width         = 20  # 缩小宽度阈值,让参数被迫换行
      , tidy          = TRUE
      , output        = TRUE
      , indent.by.FUN = FALSE
      , fail          = "warn"
    )
    
  • 结合styler包二次格式化:如果usage本身的参数调整无法满足需求,可以用styler包对输出的代码文本进行再格式化:

    library(styler)
    # 捕获usage的输出文本(不直接打印)
    usage_content <- capture.output(usage(inner_join, output = FALSE))
    # 对文本进行格式化并输出
    cat(style_text(usage_content), sep = "\n")
    

内容的提问来源于stack exchange,提问作者MYaseen208

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 02:47:15