我一直在使用group_walk()绘制dplyr管道内数据帧的分割部分的图。这一直很好,但是我不知道如何为每个拆分部分添加多个功能。
我有一个数据框
df = data.frame(x = rep(rnorm(5),5), y = rep(rnorm(5),5), col = rep(c(1:5),5),
lab = rep(c('a','b','c','d','e'),5),
section = c(rep(1,5),rep(2,5),rep(3,5),rep(4,5),rep(5,5)))
##group_walk plotting
df %>%
group_by(section) %>%
group_walk(~ plot(.x$y~.x$x, col = .x$col))
我要添加的是group_walk中的第二个函数,用于向每个子图添加图例,如下所示:
df %>%
group_by(section) %>%
group_walk(~ plot(.x$y~.x$x, col = .x$col),
~ legend('bottomright',col = .x$col, legend = .x$lab))
但是我不知道什么是合适的语法。我更喜欢在dplyr管道中工作,而不是回到for循环。有没有办法做到这一点,或者group_walk不支持对数据的每个部分进行多个函数调用?
答案 0 :(得分:2)
该选项是使用花括号({}
)将其保持为单个块
library(tidyverse)
df %>%
group_by(section) %>%
group_walk(~ {
plot(.x$y ~ .x$x, col = .x$col)
legend('bottomright', col = .x$col, legend = .x$lab)
})
请注意,在公式中,如果我们指定data
作为参数,则可以传递列名,这也会删除绘图轴标题中的.x$
df %>%
group_by(section) %>%
group_walk(~ {
plot(y ~ x, col = col, data = .x)
legend('bottomright', col = .x$col, legend = .x$lab)
})