从给定的LT索引创建稀疏矩阵,但填充其他列表中的值

时间:2016-11-17 08:53:29

标签: r list matrix sparse-matrix

我有三个清单:

"corMat"     "corMatPVAL" "index"

> head(corMat)
          [,1]
[1,] 0.7786662
[2,] 0.7536617
[3,] 0.7950954
[4,] 0.7950954
[5,] 0.7950954
[6,] 0.7388970


> head(corMatPVAL)
              [,1]
[1,] 6.166382e-155
[2,] 1.304651e-139
[3,] 3.756711e-166
[4,] 3.756711e-166
[5,] 3.756711e-166
[6,] 2.097761e-131

> head(index)
     [,1]
[1,]   82
[2,]  271
[3,]  441
[4,]  442
[5,]  443
[6,]  501

我必须制作两个大小为48389行和48389列的矩阵,即一个用于填充第三个列表(索引)中提供的索引的corMat值(第一个列表)和一个填充相同索引的corMatPVAL(第二个列表)矩阵如第三个列表(索引)中所述。

注意:索引只是矩阵的下三角形。请告诉我如何制作矩阵,然后以矩阵形式映射这些列表值。 第三个清单中提到的指数。矩阵的对角线和上角部分可以是NA

1 个答案:

答案 0 :(得分:2)

library(Matrix)
sparseMatrix(index, seq_along(index), , corMat, c(48389,  48389))
sparseMatrix(index, seq_along(index), , corMatPVAL, c(48389,  48389))

这可能很难将输出可视化,因此对于玩具示例:

sparseMatrix(10:6, 1:5, , 1:5/10,  c(10,  10))
#10 x 10 sparse Matrix of class "dgCMatrix"
#                                   
# [1,] .   .   .   .   .   . . . . .
# [2,] .   .   .   .   .   . . . . .
# [3,] .   .   .   .   .   . . . . .
# [4,] .   .   .   .   .   . . . . .
# [5,] .   .   .   .   .   . . . . .
# [6,] .   .   .   .   0.5 . . . . .
# [7,] .   .   .   0.4 .   . . . . .
# [8,] .   .   0.3 .   .   . . . . .
# [9,] .   0.2 .   .   .   . . . . .
#[10,] 0.1 .   .   .   .   . . . . .