purrr 与直方图
现在,您将把学到的内容串联起来:从两个不同的列表出发,最终绘制一个带分面的小提琴图。您将再次使用 sw_films 和 sw_people 数据集中的《星球大战》数据来回答一个问题:
- 每一部《星球大战》电影中,角色身高的分布是什么样的?
不同的电影发生在不同的星球上,所以您可能会看到角色身高分布的差异。您的第一步是将这两个数据集转换为数据框,因为 ggplot() 需要数据框作为输入。然后将它们连接起来,并绘制结果——一个按每部电影分面的直方图(子图)。
本练习是课程的一部分
使用 purrr 掌握函数式编程基础
练习说明
- 使用
sw_films数据集创建一个数据框,包含每部电影的"title",以及该电影的"characters"。 - 创建一个数据框,包含
sw_people中的"height"、"mass"、"name"和"url"元素。 - 使用
"characters" 和"url" 作为键,将两个数据框连接在一起。 - 使用
ggplot()绘制直方图,设定x = height,并按filmtitle分面。
交互式实操练习
通过完成这段示例代码来试试这个练习。
# Turn data into correct data frame format
film_by_character <- tibble(filmtitle = map____(___, ___)) %>%
mutate(filmtitle, characters = map(___, ___)) %>%
unnest(cols = c(characters))
# Pull out elements from sw_people
sw_characters <- map____(___, `[`, c(___, ___, ___, ___))
# Join the two new objects
character_data <- inner_join(___, ___, by = c(___ = ___)) %>%
# Make sure the columns are numbers
mutate(height = as.numeric(height), mass = as.numeric(mass))
# Plot the heights, faceted by film title
ggplot(character_data, aes(x = ___)) +
geom_histogram(stat = "count") +
facet_wrap(~ ___)