在 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()
我一直在尝试修复以下代码,但卡住了。
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()