【问题标题】:ggplot2: Hand over variable to function (nonstadndard eval) [duplicate]ggplot2:将变量移交给函数(非标准评估)[重复]
【发布时间】:2019-11-24 17:23:53
【问题描述】:

我正在尝试编写一个函数,其中一个分组变量被移交给一个 ggplot2 表达式。


# sample data
df <- data.frame(x = rep(1:20, 5), y = rnorm(100), 
                 grp1 = c(rep("A", 20), rep("B", 20), rep("C", 20), rep("D", 20), rep("E", 20)),
                 grp2 = c(rep("X", 50), rep("Y", 50)),
                 stringsAsFactors = TRUE)

这行得通

g <- ggplot(df, aes(x, y, color = grp1)) +
  geom_line()

print(g)

这行不通


plot_this <- function(mydf, mygroup) {

  g <- ggplot(mydf, aes(x, y, color = mygroup)) +
    geom_line()
}

p <- plot_this(df, grp2)
print(p)
Error in FUN(X[[i]], ...) : object 'grp2' not found

这也不起作用(受 dplyr 启发)

plot_this <- function(mydf, mygroup) {

  mygroup <- enquo(mygroup)

  g <- ggplot(mydf, aes(x, y, color = (!! mygroup))) +
    geom_line()
}

p <- plot_this(df, grp2)
print(p)
Error in FUN(X[[i]], ...) : object 'grp2' not found

【问题讨论】:

标签: r ggplot2 non-standard-evaluation


【解决方案1】:

我错过了整洁的评估:

plot_this <- function(mydf, mygroup) {

  mygroup <- enquo(mygroup)

  g <- ggplot(mydf, aes(x, y, color = {{mygroup}})) +
    geom_line()
}

p <- plot_this(df, grp2)
print(p)

【讨论】:

    猜你喜欢
    • 2015-02-17
    • 1970-01-01
    • 2019-03-23
    • 1970-01-01
    • 2022-01-05
    • 1970-01-01
    • 2018-08-01
    • 1970-01-01
    相关资源
    最近更新 更多