R 如何引用引号中的函数参数?

R 如何引用引号中的函数参数?,r,function,ggplot2,R,Function,Ggplot2,我指定了一个函数来绘制如下图形: func.plot <- function(z){ df %>% ggplot(aes(z)) + geom_histogram(aes(y =..density..), binwidth = 0.004, col="red", fill="green",

我指定了一个函数来绘制如下图形:

func.plot <- function(z){
  df %>%
    ggplot(aes(z)) + 
    geom_histogram(aes(y =..density..), 
                   binwidth = 0.004,
                   col="red", 
                   fill="green", 
                   alpha=.2) + 
    geom_density(col=2) + 
    labs(title="title", x="z", y="vertical axis")
}

当使用
func.write(df)
调用时,此函数也未正确实现。它将写入数据,但名称为
“x.csv”

,这取决于您希望传递输入参数的方式,您可以使用以下函数之一

要传递引用的参数,请执行以下操作:

library(ggplot2)
library(rlang)

func.plot_quoted <- function(df, z){
   df %>%
     ggplot(aes(!!sym(z))) + 
     geom_histogram(aes(y =..density..), 
                        binwidth = 0.004,
                        col="red", 
                        fill="green", 
                        alpha=.2) + 
     geom_density(col=2) + 
     labs(title="title", x=z, y="vertical axis")
}
并传递未引用的参数

func.plot_unquoted <- function(df, z){
    df %>%
      ggplot(aes({{z}})) + 
      geom_histogram(aes(y =..density..), 
                     binwidth = 0.004,
                     col="red", 
                     fill="green", 
                     alpha=.2) + 
      geom_density(col=2) + 
      labs(title="title", x={{z}}, y="vertical axis")
} 

您需要使用。您可以通过执行
df$new\u var来解决此问题。我尝试了这些函数,它们可以绘制图形,但无法成功引用引号中的参数。@NonSleeper我不确定您在这里想做什么?你能举个例子吗?我的意思是当我实现你的函数时,我可以得到图形。但是,x标签仍然显示为“z”,而不是“cyl”。@NonSleeper ohh..我错过了。我已经更新了答案,它现在应该适用于两个版本。
func.plot_quoted(mtcars, "cyl")
func.plot_unquoted <- function(df, z){
    df %>%
      ggplot(aes({{z}})) + 
      geom_histogram(aes(y =..density..), 
                     binwidth = 0.004,
                     col="red", 
                     fill="green", 
                     alpha=.2) + 
      geom_density(col=2) + 
      labs(title="title", x={{z}}, y="vertical axis")
} 
func.plot_unquoted(mtcars, cyl)