【发布时间】:2020-12-11 17:53:44
【问题描述】:
对于在 R 中对稀疏矩阵中的所有行求和的简单任务,Matrix::rowSums() 做得很好:
library(Matrix)
m <- rsparsematrix(10000, 5000, 0.1)
rsums <- Matrix::rowSums(m)
显然,这个函数可以通过按行阻塞求和来并行化。有哪些选择?我似乎找不到任何东西。
为一些基准测试奠定基础......
library(rbenchmark)
benchmark(
"Matrix::rowSums" = {
Matrix::rowSums(m)
},
replications = 10,
columns = c("test", "replications", "elapsed", "relative", "user.self", "sys.self"))
# test replications elapsed relative user.self sys.self
# 1 Matrix::rowSums 10 1.14 1 0.95 0.19
我支持最快的解决方案,R 或 Rcpp。
请参阅 Will Townes 关于循环稀疏矩阵的出色研究:https://rpubs.com/will_townes/sparse-apply。结论似乎是Matrix::rowSums 及其家族性能稳定,可以使用slam 和/或data.table 实现并行化。
【问题讨论】:
标签: r sparse-matrix rcpp