R语言是否有类似pmax/pmin的布尔运算内置并行函数?
实现类似pmax/pmin的并行布尔AND函数
你可以用base R的Reduce函数来实现这个需求,不需要引入任何额外依赖。以下是具体实现:
parallel_and <- function(...) { Reduce(`&`, list(...)) }
测试示例
运行你提供的测试代码:
parallel_and( c(TRUE, TRUE, TRUE, TRUE), c(TRUE, TRUE, TRUE, FALSE), c(TRUE, TRUE, FALSE, TRUE), c(TRUE, FALSE, TRUE, TRUE) )
得到预期输出:
# [1] TRUE FALSE FALSE FALSE
原理说明
Reduce会将传入的所有向量(通过list(...)收集)依次执行元素级的&运算,最终得到每个位置上所有向量对应元素的逻辑与结果,和pmax/pmin的并行运算逻辑完全一致。
如果需要类似的并行逻辑或函数,只需要把&替换成|即可:
parallel_or <- function(...) { Reduce(`|`, list(...)) }
内容的提问来源于stack exchange,提问作者Santiago
相关产品推荐
相关产品推荐

