加快R

时间:2018-11-14 20:02:49

标签: r sparse-matrix matrix-multiplication

我试图使用R中的%*%函数将一个矩阵(由几个1和一个多数O组成)与一个向量相乘,此过程将花费大量时间。有什么办法可以让我更快吗?

谢谢

1 个答案:

答案 0 :(得分:2)

您可以使用Matrix包创建稀疏矩阵。在这种情况下,矩阵/向量乘法可能会更快。例如:

library(Matrix)
library(tictoc)
set.seed(123)
v <- sample(1e4)
m  <- Matrix(sample(c(0, 1), length(v) ^ 2, T, c(.99, .01)),
         length(v), length(v), sparse = F)
sm <- Matrix(m, sparse = T)
tic("dense")
x <- m %*% v
toc()
#> dense: 0.094 sec elapsed
tic("sparse")
y <- sm %*% v
toc()
#> sparse: 0.006 sec elapsed