r - purrr::walk 是一个 noop 但具有相同参数的 purr::map 不是
问题描述
出于某种原因,具有相同的论点,purrr::walk
并purrr::map
表现出不同的行为。
这是一个最小的可重现示例:
library(ggplot2)
library(purrr)
library(dplyr)
suv <- mpg %>% filter(class == "suv")
compact <- mpg %>% filter(class == "compact")
purrr::walk(list(suv, compact), ~ggplot(.,aes(displ, hwy)) + geom_point())
# No output
purrr::map(list(suv, compact), ~ggplot(.,aes(displ, hwy)) + geom_point())
# Generates two plots
通过查看purrr
源代码,我可以看出这 walk
只是一个map
无形地返回.x
参数的包装器:
purrr::walk <- function(.x, .f, ...)
{
map(.x, .f, ...)
invisible(.x)
}
出于这个原因,我不明白为什么行为会有所不同。这与惰性评估有关吗?没有使用的返回值map
是否会阻止.f
被评估?
解决方案
推荐阅读
- python - 如何在 PyCharm 专业版中通过鼠标旋转我的 3D 图?
- mysql - 仅选择具有纯类别的唯一客户_SQL
- ios - iOS 14 小部件在本地工作,但通过 TestFlight 失败
- python - 如何从原始数据创建验证码图像
- c - tan(x) = 无穷大的不可能性证明(或反例),用于浮点值
- vue.js - 从浏览器检查元素时,在 html 中具有类“v-toolbar__content”的未知 div
- android - 如何为同一用户在同一节点中添加多组值?
- python - 如何显示 SQLite 数据库中的某些信息?
- javascript - MongoDB/JS - 检查一个较小的文档是否包含一些较大的字段
- wordpress - 如何通过 wordpress 中的自定义字段值过滤 Elementor 帖子