我正在寻找一个类似于pmax
和pmin
的函数,但用于布尔运算。
例如:
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
magrittr::and
是&
的别名,因此只接受两个向量(我希望避免在代码中包含额外的依赖项)。
6条答案
按热度按时间zxlwwiss1#
你能做到
3gtaxfhh2#
您可以使用
pmin
来设计parallel_and
函数,如下所示使得
给予
n8ghc7c13#
转换为data.frame并使用rowSums:
jm2pwxwz4#
另一个“左场”的想法:将bools转换为简单数组,然后
或
这将处理您正在执行的AND操作。编辑:一个快速测试显示Stephane的方法运行得更快。
3duebb1j5#
这就是你所说的“平行”吗?
创建于2023-06-15带有reprex v2.0.2
yzckvree6#
我们可以
t
转换列表,然后循环应用一个逻辑函数,如all
或any
,如果需要,最后再循环应用unlist
。如果函数的参数必须是多个向量而不是一个列表,我们可以在函数内部列出它们,然后做同样的事情: