高效地装载稀疏矩阵R中

我无法有效地将数据加载到R.稀疏矩阵格式

这是我目前的战略的一个(不完全)的例子:

library(Matrix) a1=Matrix(0,5000,100000,sparse=T) for(i in 1:5000) a1[i,idxOfCols]=x

其中x通常在长度20。这是效率不高,并最终减缓到抓取。 我知道有一个更好的办法,但不知道怎么样。 建议?

--------------解决方案-------------

您可以填充基质一次全部:

library(Matrix)
n <- 5000
m <- 1e5
k <- 20
idxOfCols <- sample(1:m, k)
x <- rnorm(k)

a2 <- sparseMatrix(
i=rep(1:n, each=k),
j=rep(idxOfCols, n),
x=rep(x, k),
dims=c(n,m)
)

# Compare
a1 <- Matrix(0,5000,100000,sparse=T)
for(i in 1:n) {
a1[i,idxOfCols] <- x
}
sum(a1 - a2) # 0

不需要使用一个for循环。 郁可唯用标准的矩阵索引用两列的矩阵:

a1[ cbind(i,idxOfCols) ] <- x

分类:ř 时间:2015-03-15 人气:2
本文关键词: 稀疏矩阵
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 1.042 (s). 10 q(s)