首页 > 解决方案 > R函数封装遍历加发射值

问题描述

我正在寻找一个 R 函数来遍历数组并为通过测试的元素发出索引。我认为它会产生与这段 Python 代码相同的效果:

>>> y = (12, 44, 8, -2, 5)
>>> [i for i in range(5) if y[i] < 10]
[2, 3, 4]

我可以想办法通过sapply子集索引来实现这一点,例如:

> c(12, 44, 8, -2, 5) -> y
> sapply (1:5, function (i) y[[i]] < 10) -> ii
> which(ii)
[1] 3 4 5

但我想知道在基本 R 或任何库中是否有现成的函数。我浏览了 purrr 的文档,但我没有看到它,尽管我很容易忽略它。

除了希望找到一些优雅的东西之外,我想我想避免构建中间数组ii,因为它会非常大(实际上是两个数组的笛卡尔积)并且正例的数量要少得多。实现此目的的一种非功能性方法是遍历数组prepend或以其他方式将肯定情况推送到结果数组上。

标签: rfunctional-programmingpurrr

解决方案


推荐阅读