想象一下这段代码:
mtcars %>%
group_split(cyl) %>%
map(select, mpg, disp, hp) %>%
`names<-`(c(4, 6, 8)) %>%
map(cor)
列表元素的名称是根据cyl
变量的值设置的,在此基础上将数据划分为三组。
现在想象一下将所有这些传递给corrplot
:
mtcars %>%
group_split(cyl) %>%
map(select, mpg, disp, hp, cyl) %>%
`names<-`(c(4, 6, 8)) %>%
map(cor) %>%
map(corrplot)
效果很好。现在,corrplot
函数有一个title
参数,用于打印绘图上的标题。我希望每个绘图的标题都是从用于创建绘图的列表元素的名称中提取的,换句话说,就是前面提到的cyl
变量的值。我该怎么做?我试过这样做:
mtcars %>%
group_split(cyl) %>%
map(select, mpg, disp, hp) %>%
`names<-`(c(4, 6, 8)) %>%
map(cor) %>%
map(corrplot, title = names(.))
但这只是打印图形上的所有名称,而不仅仅是当前元素中的名称。
如果你有一个解决方案,我将非常感谢。在不破坏管道的情况下,因为我可以很容易地找到破坏管道的解决方法。
我们可以使用imap/iwalk
而不是map
library(dplyr)
library(purrr)
library(corrplot)
mtcars %>%
group_split(cyl) %>%
map(select, mpg, disp, hp) %>%
`names<-`(c(4, 6, 8)) %>%
map(cor) %>%
imap(~ corrplot(.x, title = .y))