gpt4 book ai didi

r - dplyr 和 ggplot 管道未按预期工作

转载 作者:行者123 更新时间:2023-12-02 01:13:07 25 4
gpt4 key购买 nike

我找不到以下两个问题的解决方案:
首先我试试这个:

library(tidyverse)
gg <- mtcars %>%
mutate(group=ifelse(gear==3,1,2)) %>%
ggplot(aes(x=carb, y=drat)) + geom_point(shape=group)

Error in layer(data = data, mapping = mapping, stat = stat, geom =
GeomPoint,:object 'group' not found
这显然不起作用。但是使用这样的东西 .$group也不成功。值得注意的是,我必须从 aes() 指定外面的形状
第二个问题是这个。我无法在管道内调用保存的 ggplot ( gg )。
gg <- mtcars %>% 
mutate(group=ifelse(gear==3,1,2)) %>%
ggplot(aes(x=carb, y=drat)) + geom_point()


mtcars %>%
filter(vs == 0) %>%
gg + geom_point(aes(x=carb, y=drat), size = 4)

Error in gg(.) : could not find function "gg"
谢谢你的帮助!
编辑
找了好久才找到解决办法 here .必须在 {} 中设置完整的 ggplot 术语.
mtcars %>% 
mutate(group=ifelse(gear==3,1,2)) %>% {
ggplot(.,aes(carb,drat)) +
geom_point(shape=.$group)}

最佳答案

如果您包装您的 shape aes() 中的定义您可以获得所需的行为。使用 shape aes() 之外您可以传递一个值(即 shape=1 )。另请注意 group转换为离散变量,geom_point将连续变量传递给 shape 时会引发错误.

library(tidyverse)

gg <- mtcars %>%
mutate(group=ifelse(gear==3,1,2)) %>%
ggplot(aes(x=carb, y=drat)) +
geom_point(aes(shape=as.factor(group)))

gg

二、 %>%运算符,当调用为 lhs %>% rhs 时, 假设 rhs是一个函数。因此,如错误所示,您正在调用 gg作为一个函数。在数据帧(即 gg(mtcars) )上将绘图作为函数调用不是有效的操作。

有关如何使用 {} 的问题,请参阅 @docendo discimus 评论。完成向现有 ggplot 添加图层来自 magrittr 管道的对象。

关于r - dplyr 和 ggplot 管道未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44025379/

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