R styler包

时间:2018-06-02 19:26:14

标签: r tidyverse assignment-operator

我喜欢这个包,但我想知道如何从tidyverse风格改变一条规则:我想保留“=”而不是“< - ”进行分配。

我已阅读该说明:http://styler.r-lib.org/articles/customizing_styler.html#implementation-details

但我仍然不知道如何简单地改变这条规则。 我尝试过非常天真:

library(styler)

force_assignment_op  <- function (pd) 
  {
    to_replace <- pd$token == "LEFT_ASSIGN"
    pd$token[to_replace] <- "EQ_ASSIGN"
    pd$text[to_replace] <- "="
    pd
 }


tidyverse_style()$token$force_assignment_op = force_assignment_op

但是得到以下错误:

Error in tidyverse_style()$token$force_assignment_op = 
force_assignment_op : 
  invalid (NULL) left side of assignment

我想以一种我之后可以简单地运行样式插件的方式对其进行修改。

1 个答案:

答案 0 :(得分:4)

问题是tidyverse_style()$token是一个列表,而不是一个环境,因此您无法对其进行修改。 (好吧,你可以修改它,但是你要修改副本,而不是原版。)

您需要编写自己的函数来替换tidyverse_style函数,然后使用它。例如,假设您保留force_assignment_op函数:

LaSy_style <- function(...) {
  ts <- tidyverse_style(...)
  ts$token$force_assignment_op <- force_assignment_op
  ts
}

然后

style_text(c("ab <- 3", "a  <-3"), strict = FALSE, style = LaSy_style)

?tidyverse_style中的一个示例)将打印

ab = 3
a  = 3

(这很难看,原来tidyverse_style更好,但我不会阻止你。)