r - 应用`all`函数的更快方法?
问题描述
假设我有一个逻辑数组:
dimensions = c(10,100,200,300)
x = runif(prod(dimensions))>0.3
dim(x) = dimensions
有没有更快的方法来获得结果:
y = colMeans(apply(x,2:4,all))
?
Apply 很慢,而且这个用例很简单,因此我徘徊...
解决方案
使用colSums
:
system.time(
y <- colMeans(apply(x,2:4,all))
)
# user system elapsed
#6.916 0.058 6.978
system.time(
z <- colMeans(colSums(x, dims = 1) == dim(x)[1])
)
# user system elapsed
#0.117 0.000 0.117
identical(y, z)
#[1] TRUE
推荐阅读
- javascript - 我有一个js出现效果问题
- amazon-web-services - aws runInstance 资源被拒绝显式允许所有资源
- django - Django ValueError:无法配置处理程序“文件”
- reactjs - 在 Laravel/React 项目中找不到 React 代码
- php - Laravel store multiple 只保存一个
- java - (Java Swing) 我的动画线程没有并行运行
- mongodb - Mongodb groupby日期和id范围
- sql-server - SQL 错误日志在 SQL Server 中不可见
- json - 如何在 Mulesoft 中比较 XML 中的 json 对象值
- c# - Checklistbox 添加和检查项目 仅新添加的项目