我喜欢这个包,但我想知道如何从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
我想以一种我之后可以简单地运行样式插件的方式对其进行修改。
答案 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
更好,但我不会阻止你。)