Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 使用map()创建绘图列表_R - Fatal编程技术网

R 使用map()创建绘图列表

R 使用map()创建绘图列表,r,R,我有一个函数,它获取数据集,过滤给定元素,并创建一个绘图。我想取一个向量,用map来过滤向量的每个元素,并创建一个图。应用映射(向量、函数)不起作用——我得到了警告 “较长的对象长度不是较短对象长度的倍数” 假设我有这个基于babynames数据集的数据框名称 names <- babynames%>% pivot_wider(names_from = sex, values_from = n, values_fill=0) %>% group_by(year,name

我有一个函数,它获取数据集,过滤给定元素,并创建一个绘图。我想取一个向量,用map来过滤向量的每个元素,并创建一个图。应用
映射(向量、函数)
不起作用——我得到了警告

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

假设我有这个基于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
发布您的示例数据,因为数据的图片令人厌烦且不实用。