向假人解释问题
Explain quosure to a dummy
我正在尝试制作一个函数,当给定传递给绘图的变量时,该函数将生成绘图。
该变量是从下拉列表中选择的 - 因此 aes_string
.
make_plot <- function(data, plot_var) {
plot_var <- enquo(plot_var)
ggplot(data) +
aes_string(x = !!plot_var) +
geom_area(alpha = 0.5)
}
make_plot(my_data, variable_i_want_to_plot)
我收到这个错误:
Error: Quosures can only be unquoted within a quasiquotation context.
# Bad: list(!!myquosure) # Good: dplyr::mutate(data, !!myquosure)
aes_string
已弃用。试试这个功能:
make_plot <- function(data, plot_var) {
ggplot(data) + aes(x = .data[[plot_var]]) + geom_area(alpha = 0.5)
}
将 aes_string
替换为 aes
。
aes_string
是 old 将计算变量与“ggplot2”一起使用的方法。 Quosures(在常规 aes
调用中使用)是新方法。你不能把两者混为一谈。
我们可以将字符串转换为 sym
bol 并使用 !!
make_plot <- function(data, plot_var) {
ggplot(data, aes(x = !! rlang::sym(plot_var)) + geom_area(alpha = 0.5)
}
我正在尝试制作一个函数,当给定传递给绘图的变量时,该函数将生成绘图。
该变量是从下拉列表中选择的 - 因此 aes_string
.
make_plot <- function(data, plot_var) {
plot_var <- enquo(plot_var)
ggplot(data) +
aes_string(x = !!plot_var) +
geom_area(alpha = 0.5)
}
make_plot(my_data, variable_i_want_to_plot)
我收到这个错误:
Error: Quosures can only be unquoted within a quasiquotation context.
# Bad: list(!!myquosure) # Good: dplyr::mutate(data, !!myquosure)
aes_string
已弃用。试试这个功能:
make_plot <- function(data, plot_var) {
ggplot(data) + aes(x = .data[[plot_var]]) + geom_area(alpha = 0.5)
}
将 aes_string
替换为 aes
。
aes_string
是 old 将计算变量与“ggplot2”一起使用的方法。 Quosures(在常规 aes
调用中使用)是新方法。你不能把两者混为一谈。
我们可以将字符串转换为 sym
bol 并使用 !!
make_plot <- function(data, plot_var) {
ggplot(data, aes(x = !! rlang::sym(plot_var)) + geom_area(alpha = 0.5)
}