首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何引用/引用/!!在ggplot中的作品

如何引用/引用/!!在ggplot中的作品
EN

Stack Overflow用户
提问于 2020-12-12 19:33:20
回答 1查看 226关注 0票数 2

我想要构建一个函数,在那里我可以将一个变量名作为一个字符串传递给我,它将返回一个ggplot对象。

这个方法很有效:

代码语言:javascript
复制
myplot <- function(x, y) {
  ggplot(data, aes_string(x="x", y="y")) + geom_bar()
}

但是在ggplot文档中:

  1. It是这样写的(我引用):“我推荐使用aes_()”和
  2. ,所有这些函数都是软推荐的。请使用整洁的评估习语来代替“

”。

但在那一刻,我发现我不知道如何使用aes_ (像上面那样构建一个例子,我也不知道如何引用、引用、准引用。网上有很多关于这方面的文献,但是如果有人能在这个具体的例子中向我展示它是如何工作的,它可能会给我一个从这里开始的提示。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-12-12 19:34:29

aes_string被否决了。如果要传递字符串,则转换为symbol并使用!!进行计算。

代码语言:javascript
复制
library(ggplot2)
library(dplyr)
myplot <- function(x, y) {
  ggplot(data, aes(x= !! rlang::sym(x), y= !! rlang::sym(y))) + geom_bar()
   }

如果我们传递未引号,则使用curly-curly运算符{{}}

代码语言:javascript
复制
myplot <- function(x, y) {
     ggplot(data, aes(x= {{x}}, y= {{y}})) + geom_bar()
   }

卷卷运算符使用enquo!!进行操作。

代码语言:javascript
复制
myplot <- function(x, y) {
     ggplot(data, aes(x= !! enquo(x), y= !! enquo(y))) + geom_bar()
   }

如果我们想传递引号或未引号,请使用ensym

代码语言:javascript
复制
myplot <- function(x, y) {
     ggplot(data, aes(x= !! ensym(x), y= !! ensym(y))) + geom_bar()
   }

注意:使用data作为函数的参数也更好。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65269029

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档