自动化ggplot2的qplot

时间:2019-08-20 06:38:01

标签: r ggplot2

我有一个名为df的数据框。我尝试构建一个函数来绘制密度,但会出现一些错误。

         df
         A  B   C  D   E  F
 1     asd 29  sf 36  sf 44
 2     fsd 24 gfd 56 gfd 34
 3      gs 46 asd 39 asd 37
 4     asd 50 gfg 26 gfg 23
 5      sf 43  fg 56  fg 37
 6     dfg 29  er 35  er 51
 7    sdfg 32  tr 27  tr 28
 8  fgdsgd 24  qw 31  qw 36
 9   gdfgd 35 gfg 33 gfg 33

 dis <- function(name,...)
 {
 fg <- qplot(name, data = , geom = "density")
 fg
 }

我创建了一个名为dis的函数来实现以上目的:

 dis(F,data=df) 
 or
 dis(B,data=df)

我知道我可以使用ggplot2,但是我需要在函数中使用它。

2 个答案:

答案 0 :(得分:2)

也许这可以帮助:

library(ggplot2)

dis <- function(data,variable)
    {
    # you can use both, or the commented version or the qplot one
    #  fg <- ggplot(data,aes(variable)) + geom_density()
       fg <- qplot(variable,data = data, geom = "density")
       fg
    }

dis(df, df$F) 

enter image description here

答案 1 :(得分:0)

我认为您正在寻找非标准评估(NSE)。一个人可以做:

  library(ggplot2)
# Switched data and variable name for taste. Personally prefer data argument first
dis <- function(df,name){
  fg <- qplot(!!rlang::sym(name),
              data = df,
              geom = "density",
              ylab = waiver())
  fg
}
dis(df,"F")

结果: enter image description here