我最近一直在学习purrr
家族函数,当我阅读map_if
的文档时,我遇到了.p
参数的另一种定义形式,也就是我无法理解的 predicate 函数。
或者,如果. x的元素本身是对象列表,则可以使用指示内部列表中逻辑元素名称的字符串
我想知道是否有人能告诉我它的意思,以及当我处理一个元素也是列表的列表时,我该如何使用它。
x <- list(a = list(foo = 1:2, bar = 3:4), b = list(baz = 5:6))
一个简单的例子将不胜感激,因为我已经做了一些研究,并没有找到任何迹象。
先谢谢你了。
2条答案
按热度按时间7gcisfzg1#
它似乎引用了一个值为
TRUE
/FALSE
的内部变量名。下面是我创建的基本示例来测试它。创建一个列表,其中内部列表包含一个变量的布尔值:
通过传递具有以下变量名称的字符串,将布尔变量(
y
)作为.p
predicate 引用:因此,它只修改了
foo
变量,因为y
是TRUE
,而bar
没有更改,因为y
是FALSE
。jq6vz3qz2#
虽然我不完全确定您实际上想要理解什么,但是以列表的列表为例,我们需要考虑到这里只有
map_if
可用,而pmap_if
不可用,让我们采用另一个列表的列表,而不是您建议的列表。现在
map_if
适用于.f
,只要.p
是T
,所以如果我们想取列表x中所有奇数索引列表的平均值,我们必须再次使用嵌套的map
。见
我们也可以在
.p
中使用其他 predicate 函数。下面的例子产生相同的输出。或者假设
x
的名称类似于则下面的语法将产生类似的结果
我希望这是有点接近你可能想了解。
你也可以给予一读it。