我有一个函数,它可以获取数据集,为给定元素过滤并创建图。我想获取一个向量,并使用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)
我现在特别遇到的问题是所有图形都合并为一个。
答案 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]]
等中。