gpt4 book ai didi

r - 整洁的 eval 与 base 或 get() 与 sym() 与 as.symbol()

转载 作者:行者123 更新时间:2023-12-04 09:11:57 24 4
gpt4 key购买 nike

一段时间以来,我一直试图了解 tidy eval 或如何在 tidyverse 中使用变量,但我似乎从未完全掌握它。

例如,我试图将 ggplot 与变量映射一起使用。这将是基本的 R 版本:

library(ggplot2)
var1 = "wt"
var2 = "mpg"
ggplot(mtcars, aes(x = get(var1), y = get(var2))) + geom_point()

但是,根据我所看到的所有文档和讨论,“正确”的 quasiquotation 方式是:
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 社区会回避它?

最佳答案

如果数据框包含 var1var2列,这些将被 get() 提取而不是您环境中的对象。

此外,当您直接修改捕获的表达式时,您将获得更好的带有准引号的表达式的自动标记。

关于r - 整洁的 eval 与 base 或 get() 与 sym() 与 as.symbol(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55929490/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com