R 以与整洁评估兼容的方式整理文本

R 以与整洁评估兼容的方式整理文本,r,tidyverse,tidyr,tidyeval,formatr,R,Tidyverse,Tidyr,Tidyeval,Formatr,我想以符合tidy评估的方式整理源代码。不幸的是,格式化程序没有保留操作员 formatR::tidy_source(text = "!!little_b", output = FALSE)$text.tidy ## [1] "!(!little_b)" 根据第7节 简而言之,tidy_源代码(text=code)基本上是deparse(parse(text=code)) 但是当我调用deparse(parse(text=code))时,文本是不可用的。实际行为: deparse(parse(

我想以符合tidy评估的方式整理源代码。不幸的是,
格式化程序
没有保留
操作员

formatR::tidy_source(text = "!!little_b", output = FALSE)$text.tidy
## [1] "!(!little_b)"
根据第7节

简而言之,tidy_源代码(text=code)基本上是deparse(parse(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\"))" 

此处的解决方案可能会解决此问题。

要解决此deparser问题,您可以提供函数形式:

formatR::tidy_source(text = "`!!`(little_b)", output = FALSE)$text.tidy
请注意,您需要即将在CRAN上发布的rlang 0.2.0

我们一直在开发自己的deparser,将来可能会在Format中使用,例如
rlang::expr\u deparse()
。我们还将尝试看看R core是否会接受对基本deparser的补丁,以避免不必要的括号中的包装

还可以查看应该处理
的包立即关闭。它现在是格式化R代码的首选软件包,并且非常可配置

formatR::tidy_source(text = "`!!`(little_b)", output = FALSE)$text.tidy