最近我发布了两个与函数编写相关的问题(1,2)。我得到了每个问题有用的答案,从而得到了以下两个函数:
second_table <- function(dat, variable1, variable2){
dat %>%
tabyl({{variable1}}, {{variable2}}, show_na = FALSE) %>%
adorn_percentages("row") %>%
adorn_pct_formatting(digits = 1) %>%
adorn_ns()
}
并且
second_table2 = function(dat, variable1, variable2){
variable1 <- sym(variable1)
dat %>%
tabyl(!!variable1, {{variable2}}, show_na = FALSE) %>%
adorn_percentages("row") %>%
adorn_pct_formatting(digits = 1) %>%
adorn_ns()
}
这些函数可以正常工作,但在查看了可用文档并编写了一些额外的函数后,我仍然对r语言rlang包中的{{}}运算符和!! + sym()之间的区别感到困惑。我不喜欢使用我完全不理解的代码,并且肯定将来会进一步使用这些rlang运算符,因此非常希望能够以简单易懂的方式解释这些运算符之间的区别。
{{
取代了!!
,更加简单易懂,请参考上述链接。 - Waldisym
对象,而有时候则不需要。在这个例子中,因为你直接使用变量,所以没有使用sym()
和!!
的必要。但是如果你想要改变或修改变量,那么你就需要先操作sym
。另一个常见使用sym() + !!
的原因是通过as_label()
也将变量名作为字符串获取。使用{{}}
是做不到这一点的。 - MrFlick