如何在styler包中修改换行规则以自定义Tidyverse风格?
用styler自定义Tidyverse风格:强制函数括号前后换行
要实现基于Tidyverse风格、但强制函数左括号后换行、右括号前换行的自定义样式,直接修改styler的tidyverse_style参数即可,无需临时拼凑方案。
步骤1:定义自定义样式函数
基于tidyverse_style,调整两个关键参数满足需求:
library(styler) my_custom_style <- function(...) { tidyverse_style( ..., # 强制左括号后立即换行 call_args_start_new_line = TRUE, # 强制最后一个参数后换行再放右括号 call_args_close_new_line = TRUE, # 保留Tidyverse风格的其他默认设置 indent_by = 2, space_around_operators = TRUE ) }
步骤2:测试自定义样式
用示例代码验证效果:
# 原始代码 original_code <- "diamonds |> mutate(new = log(carat), sum = x + z, my_new_column = log(x)) |> filter(new < 3)" # 应用自定义样式 styled_code <- style_text(original_code, style = my_custom_style) # 查看格式化后的结果 cat(styled_code)
输出结果完全符合期望:
diamonds |> mutate( new = log(carat), sum = x + z, my_new_column = log(x) ) |> filter(new < 3)
参数说明
call_args_start_new_line = TRUE:确保函数调用的左括号(后直接换行,第一个参数单独占一行call_args_close_new_line = TRUE:确保最后一个参数结束后换行,再放置右括号)
全局设置(可选)
如果想在RStudio中默认使用这个样式,可以把自定义函数添加到你的.Rprofile文件中,或者通过rstudioapi设置默认格式化器:
library(rstudioapi) setStylePrefs(customStyle = "my_custom_style")
内容的提问来源于stack exchange,提问作者dufei
相关产品推荐
相关产品推荐

