r - 如何将 & 运算符应用于 R 中的布尔矩阵?
问题描述
我有一个矩阵,例如
matrix(sample(c(T,F),12,replace=T),3,4 )
结果是
[,1] [,2] [,3] [,4]
[1,] TRUE FALSE FALSE TRUE
[2,] FALSE TRUE TRUE TRUE
[3,] TRUE FALSE FALSE FALSE
我正在寻找将AND (&)
运算符应用于所有矩阵的最短方法。所以,如果有一个FALSE
输出也应该是假的。
我知道循环是如何工作的,但我正在寻找一个更短的解决方案
解决方案
对于任何矩阵m
:
> m
[,1] [,2] [,3] [,4]
[1,] TRUE TRUE TRUE TRUE
[2,] FALSE FALSE FALSE FALSE
[3,] FALSE FALSE FALSE TRUE
c(m)
将该矩阵展平为向量:
> c(m)
[1] TRUE FALSE FALSE TRUE FALSE FALSE TRUE FALSE FALSE TRUE FALSE TRUE
因此,要使所有元素的 AND 为 TRUE,所有元素都必须为 TRUE。因此:
> all(c(m))
[1] FALSE
在这种情况下,您可以省略c
并直接执行:
> all(m)
[1] FALSE
在更一般的情况下,您可以将函数应用于带有 的向量的元素对Reduce
,例如:
> Reduce("&", c(m))
[1] FALSE
它返回m[1,1] & m[1,2] & m[1,3] ... & m[3,4]
- 或者可能以其他顺序返回。但是all
比较快。
推荐阅读
- javascript - 即使组件已安装,也未安装 setState 警告
- javascript - 复选框不会附加
- javascript - 单击jQuery中的按钮时,是否有解决Asp.Net gridview行数据传输到某些特定文本框的解决方案?
- python - 在 exec 节点中传递有效负载值
- php - Symfony 4中用户密码的自定义表单
- java - 我什么时候应该在 INSERT 期间使用 /*+ APPEND */
- javascript - 处理单击并悬停在同一元素上并保持弹出模式打开直到弹出模式悬停在上面
- ios - 如何将镜像添加到 2d Box 角
- reactjs - 在 gatsby.js 网站中嵌入第三方脚本标签
- reactjs - Yarn remove old package (that has security vulnerability)?