使用map()创建绘图列表

时间:2020-11-01 13:56:53

标签: r

我有一个函数,它可以获取数据集,为给定元素过滤并创建图。我想获取一个向量,并使用map过滤向量的每个元素并创建一个图。应用map(vector, function)不起作用-我收到警告

“较长的对象长度不是较短的对象长度的倍数”。

说我有这个基于婴儿名字数据集的数据帧names

names <- babynames%>%
  pivot_wider(names_from = sex, values_from = n, values_fill=0) %>%
  group_by(year,name) %>%
  summarize(Female=sum(F), Male=sum(M))  %>%
  mutate(percent = Female/(Male+Female)*100)

and a vector made up of `"Ollie"`, `"Verna"`, and `"Ava"`. I want a graph for each of `Ollie`, `Verna`, and `Ava`.

fun_name <- function(name_1) {
    names %>%
    filter(name==name_1) %>%
    ggplot(aes(x=year, y=percent)) +
    geom_line()
}

map(vector, fun_name)

我现在特别遇到的问题是所有图形都合并为一个。

1 个答案:

答案 0 :(得分:1)

您可以尝试:

library(tidyverse)
library(babynames)

vector <- c("Ollie", "Verna", "Ava")

fun_name <- function(name_1) {
  names %>%
    filter(name==name_1) %>%
    ggplot(aes(x=year, y=percent)) +
    geom_line()
}

plot_list <- map(vector, fun_name)
length(plot_list)
#[1] 3

各个图位于plot_list[[1]]plot_list[[2]]等中。

相关问题