热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

使用purrr创建quosures列表

如何解决《使用purrr创建quosures列表》经验,为你挑选了1个好方法。

是否可以使用purrr返回一个quosures列表?

foo <- c(1:3)
purrr::map(foo, rlang::quo(. + 2))

返回已评估的quosures(即包含3到5的列表).

有没有办法返回包含quo(1 + 2),quo(2 + 2)等的列表?

(包版本如果重要或未来访问过:purrr 0.2.5,rlang 0.2.1).



1> Mikko Martti..:

您可以使用!!以将输入取消引入quosure:

foo <- c(1:3)
purrr::map(foo, ~ rlang::quo(!!.x + 2))
#> [[1]]
#> 
#>   expr: ^1L + 2
#>   env:  0000000015213C98
#> 
#> [[2]]
#> 
#>   expr: ^2L + 2
#>   env:  0000000015217758
#> 
#> [[3]]
#> 
#>   expr: ^3L + 2
#>   env:  00000000157B9FD0

请注意,这里我们还使用匿名函数的公式简写map()来返回未评估的quosure.Quosures本身可以通过map()(使用purrr::as_mapper())强制转换为函数,因此您首先得到的是评估答案的原因,因为您实际上是在编写map(foo, ~ . + 2).

由reprex包创建于2018-08-06 (v0.2.0.9000).


推荐阅读
author-avatar
夏欣晴
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有