我希望以符合整洁评估的方式整理源代码。遗憾的是,formatR
并未保留!!
运算符。
formatR::tidy_source(text = "!!little_b", output = FALSE)$text.tidy
## [1] "!(!little_b)"
来自Yihui's formatR guide的第7节,
简而言之,tidy_source(text = code)基本上是deparse(解析(text = code))...
但是当我拨打deparse(parse(text = code))
时,文字无法使用。实际行为:
deparse(parse(text = "1+!!x"))
## [1] "structure(expression(1 + (!(!x))), srcfile = <environment>, wholeSrcref = structure(c(1L, "
## [2] "0L, 2L, 0L, 0L, 0L, 1L, 2L), srcfile = <environment>, class = \"srcref\"))"
所需的结果是整理文字:
"1 + !!x
此处的解决方案可能会解决https://github.com/ropensci/drake/issues/200。
答案 0 :(得分:1)
要解决此deparser问题,您可以提供以下功能形式:
formatR::tidy_source(text = "`!!`(little_b)", output = FALSE)$text.tidy
请注意,您需要很快将在CRAN上的rlang 0.2.0。
我们一直致力于我们自己的deparser,将来也许可以在formatR中使用,例如rlang::expr_deparse()
。我们还会尝试查看R核是否会接受基础解析器的补丁,以避免在括号中出现这种不必要的包装。
同时查看应该处理!!
的{{3}}包。它现在是格式化R代码的首选包,它是非常可配置的。