r - 如何引用/引用/!!在 ggplot 中工作

标签 r ggplot2

我想构建一个函数,在其中我可以将变量名称作为字符串传递,它会返回一个 ggplot 对象。

这个有效:

myplot <- function(x, y) {
  ggplot(data, aes_string(x="x", y="y")) + geom_bar()
}

但是在ggplot文档中:

  1. 它是这样写的(我引用):“我建议使用 aes_()”和
  2. “所有这些函数均已软弃用。请改用整洁的评估惯用语”

但那一刻我发现我不明白如何使用aes_(如上构建一个示例,并且我不明白如何引用,引用,准引用的意思。有网上有很多关于这方面的文献,但是如果有人可以向我展示这个具体示例它是如何工作的,它可能会给我一个从这里开始的提示。

最佳答案

aes_string 已弃用。如果我们传递字符串,则转换为 symbol 并使用 !!

进行评估
library(ggplot2)
library(dplyr)
myplot <- function(x, y) {
  ggplot(data, aes(x= !! rlang::sym(x), y= !! rlang::sym(y))) + geom_bar()
   }

如果我们传递不带引号的参数,则使用 curl 运算符{{}}

myplot <- function(x, y) {
     ggplot(data, aes(x= {{x}}, y= {{y}})) + geom_bar()
   }

curly-curly 运算符使用 !! 执行 enquo

myplot <- function(x, y) {
     ggplot(data, aes(x= !! enquo(x), y= !! enquo(y))) + geom_bar()
   }

如果我们想传递带引号或不带引号的值,请使用ensym

myplot <- function(x, y) {
     ggplot(data, aes(x= !! ensym(x), y= !! ensym(y))) + geom_bar()
   }

注意:最好将数据作为函数的参数

关于r - 如何引用/引用/!!在 ggplot 中工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65269029/

相关文章:

r - 如何使用 ggplot2 生成热图?

r - 当数据是tapply的函数时如何在R中使用ggplot2

r - 使用 R 中的 for 循环为每个因素打印多个 ggplots

r - 如何在 R 中检查包时修复 "Unable to find GhostScript executable to run checks on size reduction"错误?

r - 变量赋值:某个帖子中 "<-"和 "="之间的差异并避免使用 "return"

mysql - 可以将 RDBMS 的 COMMIT 事务/"all-or-nothing"范例映射到 R 吗?

r - 在子数据集的图之间创建通用图例

r - geom_smooth 自定义线性模型

r - 通过R中的xlsx包插入图表到excel

c++ - R: C 符号不在加载表中