我想构建一个函数,在其中我可以将变量名称作为字符串传递,它会返回一个 ggplot 对象。
这个有效:
myplot <- function(x, y) {
ggplot(data, aes_string(x="x", y="y")) + geom_bar()
}
但是在ggplot
文档中:
- 它是这样写的(我引用):“我建议使用 aes_()”和
- “所有这些函数均已软弃用。请改用整洁的评估惯用语”
但那一刻我发现我不明白如何使用aes_
(如上构建一个示例,并且我不明白如何引用,引用,准引用的意思。有网上有很多关于这方面的文献,但是如果有人可以向我展示这个具体示例它是如何工作的,它可能会给我一个从这里开始的提示。
最佳答案
aes_string
已弃用。如果我们传递字符串,则转换为 sym
bol 并使用 !!
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/