在 R 中使用环境和 ggplot2 进行故障排除

Troubleshooting with environments and ggplot2 in R

我一直在尝试修复以下代码,但卡住了。

library(tidyverse)

piechart <- function(data, mapping) {
  ggplot(data, mapping) +
    geom_bar(width = 1) + 
    coord_polar(theta = "y") + 
    xlab(NULL) + 
    ylab(NULL)
}

piechart3 <- function(data, var, ...) {
  piechart(data, aes_(~factor(1), fill = substitute(var)))
}

f <- function() {
  levs <- c("2seater", "compact", "midsize", "minivan", "pickup", 
            "subcompact", "suv")
  piechart3(mpg, factor(class, levels = levs))
}
f()

我在尝试 运行 f()- "Error in factor(class, levels = levs) : object 'levs' not found" 时收到以下错误响应。我知道这是环境问题,但我不确定如何解决它。

使用 {{}} 将未引用的变量评估为数据框的列。

library(ggplot2)
library(rlang)

piechart <- function(data, mapping) {
   ggplot(data, mapping) +
     geom_bar(width = 1) + 
     coord_polar(theta = "y") + 
     xlab(NULL) + 
     ylab(NULL)
}

piechart3 <- function(data, var, ...) {
   piechart(data, aes(factor(1), fill = {{var}}))
}

f <- function() {
  levs <- c("2seater", "compact", "midsize", "minivan", "pickup", 
        "subcompact", "suv")
  mpg$class <- factor(mpg$class, levels = legs)
  piechart3(mpg, class)
}

f()