Какие-либо предложения, программно или математически, для ускорения этого вычисления в R?Я включил некоторые сгенерированные данные, которые близко соответствуют сценарию реальных данных, с которым я работаю.Я также пытался использовать apply и parApply и пытался превратить его в разреженную матрицу, поскольку у него очень много нулей, но пока это самый быстрый метод, который я придумал.Любые предложения, чтобы сделать это быстрее?Мне нужно сделать эти вычисления 10000 раз.
Данные, которые близко соответствуют моему сценарию:
set.seed(7)
# same size matrix as my real data data puzzle
A <- matrix(rbeta((13163*13163),1,1), ncol = 13163, nrow = 13163)
# turn a bunch to 0 to more closely match that I have a lot of 0's in real data
A[A < 0.5] <- 0
# create binary matrix
z <- matrix(rbinom((13163*13163), 1, 0.25), ncol = 13163, nrow = 13163)
Я обнаружил, что Rfast ::Rowsums дает мне самые быстрые результаты.
start1 <- Sys.time()
testA <- 1 - exp(Rfast::rowsums(log(1-A*z)))
stop1 <- Sys.time()
stop1 - start1
Прошу прощения за мой неуклюжий подход сравнительного анализа ...