gpt4 book ai didi

r - Tidyeval 拼接运算符!!! ggplot 的 aes 失败

转载 作者:行者123 更新时间:2023-12-02 08:02:22 24 4
gpt4 key购买 nike

The article discussing tidy evaluation in ggplot2给人的印象是 aes() 现在支持 quasiquoation。但是,我无法让它与 unquote-splice 运算符 !!! 一起使用。

library( ggplot2 )

## Predefine the mapping of symbols to aesthetics
v <- rlang::exprs( x=wt, y=mpg )

## Symbol-by-symbol unquoting works without problems
ggplot( mtcars, aes(!!v$x, !!v$y) ) + geom_point()

## But unquote splicing doesn't...
ggplot( mtcars, aes(!!!v) ) + geom_point()
# Error: Can't use `!!!` at top level
# Call `rlang::last_error()` to see a backtrace

(也许不足为奇)如果将美学映射移动到几何图形,也会发生同样的事情:

ggplot( mtcars ) + geom_point( aes(!!v$x, !!v$y) )   # works
ggplot( mtcars ) + geom_point( aes(!!!v) ) # doesn't

我是否遗漏了一些明显的东西?

最佳答案

那是因为 aes() 采用 xy 参数,而 !!! 仅在点内有效。我们将在未来尝试解决这个特殊问题。在此期间,您需要单独取消引用 xy,或使用以下解决方法:

aes2 <- function(...) {
eval(expr(aes(!!!enquos(...))))
}

ggplot(mtcars, aes2(!!!v)) + geom_point()

关于r - Tidyeval 拼接运算符!!! ggplot 的 aes 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55815963/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com