更快地应用`all`函数?

问题描述 投票:0回答:1

假设我有一个逻辑数组:

dimensions = c(10,100,200,300)
x = runif(prod(dimensions))>0.3
dim(x) = dimensions

是否有更快的方法来获得结果:

y = colMeans(apply(x,2:4,all))

应用非常慢,这个用例非常简单,因此我徘徊了...

r vectorization sapply
1个回答
1
投票

使用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, 1) == dim(x)[1])
)
# user      system     elapsed 
#0.117       0.000       0.117

identical(y, z)
#[1] TRUE
© www.soinside.com 2019 - 2024. All rights reserved.