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
相关产品推荐
相关产品推荐

