我想要构建一个函数,在那里我可以将一个变量名作为一个字符串传递给我,它将返回一个ggplot对象。
这个方法很有效:
myplot <- function(x, y) {
ggplot(data, aes_string(x="x", y="y")) + geom_bar()
}但是在ggplot文档中:
”。
但在那一刻,我发现我不知道如何使用aes_ (像上面那样构建一个例子,我也不知道如何引用、引用、准引用。网上有很多关于这方面的文献,但是如果有人能在这个具体的例子中向我展示它是如何工作的,它可能会给我一个从这里开始的提示。
发布于 2020-12-12 19:34:29
aes_string被否决了。如果要传递字符串,则转换为symbol并使用!!进行计算。
library(ggplot2)
library(dplyr)
myplot <- function(x, y) {
ggplot(data, aes(x= !! rlang::sym(x), y= !! rlang::sym(y))) + geom_bar()
}如果我们传递未引号,则使用curly-curly运算符{{}}。
myplot <- function(x, y) {
ggplot(data, aes(x= {{x}}, y= {{y}})) + geom_bar()
}卷卷运算符使用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()
}注意:使用data作为函数的参数也更好。
https://stackoverflow.com/questions/65269029
复制相似问题