我有一个矩阵M的稀疏表示如下:
1 3 6
2 5 7
5 4 10
表示M[1,3]=6
,M[2,5]=7
和M[5,4]=10
。如果我想从此表示生成常规2D矩阵,是否有办法立即设置此2D矩阵M的所有现有元素?我不想在循环中遍历所有索引对,因为有成千上万的这样的对(尽管上面的例子中只有3对)。
我尝试了M[c(1,2,5),c(3,5,4)]=c(6,7,10)
,但除了M[1,5]=6
之外,它还设置了M[1,4]=6
和M[1,3]=6
。
答案 0 :(得分:3)
你说“稀疏”我说Matrix:
library(Matrix)
M <- sparseMatrix(i = c(1, 2, 5),
j = c(3, 5, 4),
x = c(6, 7, 10),
dims = c(5, 5))
#5 x 5 sparse Matrix of class "dgCMatrix"
#
#[1,] . . 6 . .
#[2,] . . . . 7
#[3,] . . . . .
#[4,] . . . . .
#[5,] . . . 10 .
如果您需要基础R矩阵:
as.matrix(M)
# [,1] [,2] [,3] [,4] [,5]
#[1,] 0 0 6 0 0
#[2,] 0 0 0 0 7
#[3,] 0 0 0 0 0
#[4,] 0 0 0 0 0
#[5,] 0 0 0 10 0