我一直在努力理解整洁评估或如何在整洁环境中使用变量,但似乎始终无法完全掌握。
例如,我正在尝试使用变量映射来使用ggplot。以下是基本的R版本:
library(ggplot2)
var1 = "wt"
var2 = "mpg"
ggplot(mtcars, aes(x = get(var1), y = get(var2))) + geom_point()
然而,根据我看到的所有文件和讨论,"正确的"准引用方式应该是:
ggplot(mtcars, aes(x = !!sym(var1), y = !!sym(var2))) + geom_point()
也许这更容易理解为:
ggplot(mtcars, aes(x = !!as.symbol(var1), y = !!as.symbol(var2))) + geom_point()
get()
方法更短且更易读。为什么它被tidyverse社区避免使用呢?
aes_string()
而不是get()
。 - joranget(var1)
和get(var2)
。我怀疑https://adv-r.hadley.nz/evaluation.html#quosures与此有关。 - Raoul Dukeaes_
函数,因为它们现在已经软弃用了,所以至少有一些原因不使用它们。 - burgerget
会以意想不到的方式中断,因为评估方案更加脆弱。 - joran