如何在R中一次设置多个矩阵元素?

时间:2015-05-14 05:58:23

标签: r matrix

我有一个矩阵M的稀疏表示如下:

1 3 6

2 5 7

5 4 10

表示M[1,3]=6M[2,5]=7M[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]=6M[1,3]=6

1 个答案:

答案 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