Более быстрый способ применения функции «все»? - PullRequest
1 голос
/ 20 марта 2020

Предположим, у меня есть логический массив:

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

Есть ли более быстрый способ получить результат:

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

?

Применить довольно медленно, и этот вариант использования довольно прост, поэтому я бродить ...

1 Ответ

4 голосов
/ 20 марта 2020

Использование 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...