【发布时间】:2019-08-10 10:58:21
【问题描述】:
有任何建议,以编程或数学方式,以加快 R 中的计算速度吗?我已经包含了一些与我正在使用的真实数据场景非常匹配的生成数据。我还尝试使用 apply 和 parApply 并尝试将其转换为稀疏矩阵,因为它有很多 0,但到目前为止,这是我想出的最快的方法。有什么建议可以让它更快吗?我需要进行 10,000 次这样的计算。
与我的场景非常匹配的数据:
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
请原谅我笨拙的基准测试方法...
【问题讨论】:
-
您提供的矩阵是一列矩阵。你确定这是你拥有的吗?
-
microbenchmark 非常非常易于使用(比 Python 中烦人的
timeit模块要容易得多,但我离题了)。没有理由笨拙。 -
谢谢@F.Privé。我修正了那个错字并问了同样的问题,但结果略有不同(稀疏矩阵从来没有更快)。
标签: r performance math matrix