R 使用map()创建绘图列表
我有一个函数,它获取数据集,过滤给定元素,并创建一个绘图。我想取一个向量,用map来过滤向量的每个元素,并创建一个图。应用R 使用map()创建绘图列表,r,R,我有一个函数,它获取数据集,过滤给定元素,并创建一个绘图。我想取一个向量,用map来过滤向量的每个元素,并创建一个图。应用映射(向量、函数)不起作用——我得到了警告 “较长的对象长度不是较短对象长度的倍数” 假设我有这个基于babynames数据集的数据框名称 names <- babynames%>% pivot_wider(names_from = sex, values_from = n, values_fill=0) %>% group_by(year,name
映射(向量、函数)
不起作用——我得到了警告
“较长的对象长度不是较短对象长度的倍数”
假设我有这个基于babynames数据集的数据框名称
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)
名称%
透视图更宽(名称从=sex,值从=n,值填充=0)%>%
分组单位(年份、名称)%>%
汇总(女性=总和(F),男性=总和(M))%>%
突变(百分比=雌性/(雄性+雌性)*100)
还有一个由“奥利”,“维娜”和“艾娃”组成的向量。我想要一张‘奥利’、‘维娜’和‘艾娃’的图表。
有趣的名字%
过滤器(名称==name_1)%>%
ggplot(aes(x=年份,y=百分比))+
geom_线()
}
地图(矢量,趣味名称)
我现在要特别指出的问题是,所有的图表都合并成一个。您可以尝试:
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
库(tidyverse)
图书馆(babynames)
矢量%
ggplot(aes(x=年份,y=百分比))+
geom_线()
}
在这种情况下,我得到一个图表。data=df
应该更改为data=names
。是否检查了绘图列表[[1]]
,绘图列表[[2]]
等?未找到绘图列表[[1]];列表图是长度为1的列表。data=names是我使用的。好的。那么你能用dput
而不是图像来提供一个可复制的例子来测试答案吗?无法从映像复制数据。您可以使用dput()添加自己的数据吗?我搜索并找到了,但这并没有显示出我能做到的任何方式。请使用dput
发布您的示例数据,因为数据的图片令人厌烦且不实用。