我想在矩阵行上使用布尔R运算符OR。下面是使用apply函数找到我对简单玩具示例的解决方案。这样做最简单/最快捷的方法是什么?这如何推广到其他布尔运算?
b <- matrix(c(T,T,F,T,F,F),3)
apply(b,1, function(x) T %in% x)
2 个答案:
答案 0 :(得分:3)
您可以使用函数any
(逻辑“或”)和all
(逻辑“和”)。在你的情况下:
apply(b, 1, any)
顺便说一句,我会避免在代码中使用T
和F
:它们是可以在代码中的其他位置重新定义的普通标识符。另一方面,TRUE
和FALSE
不是常量。
答案 1 :(得分:0)
我们可以将矢量化rowSums
用于此
rowSums(b)!=0
#[1] TRUE TRUE FALSE
或者如果只有两列,也可以使用|
运算符
b[,1]|b[,2]
#[1] TRUE TRUE FALSE