2

在 R 中,我想将 dgCMatrix 非零值设置为向量。

例如:

这是一个 dgCMatrix:

M
3 x 4 sparse Matrix of class "dgCMatrix"

[1,] . 1 . 1
[2,] . . 1 .
[3,] . . 1 .

这是一个向量:

a <- c(1,2,3,4)

然后,我想按列将非零值设置为向量。结果将是:

[1,] . 2 . 4
[2,] . . 3 .
[3,] . . 3 .

谢谢 。

4

1 回答 1

2

这应该是非常有效的:

library(Matrix)
M <- Matrix(c(0,0,0,1,0,0,0,1,1,1,0,0), nc=4) ## Recreates your dgCMatrix
a <- 1:4

M %*% Diagonal(x=a)
# 3 x 4 sparse Matrix of class "dgCMatrix"
#             
# [1,] . 2 . 4
# [2,] . . 3 .
# [3,] . . 3 .

编辑:

如果M具有 0 和 1 以外的一些值,则可以改用以下值之一:

M <- M * 11:14  ## Alter M to test the following code 

as(M>0 | M<0, "dgCMatrix") %*% Diagonal(x=a)

as(!M==0, "dgCMatrix") %*% Diagonal(x=a)
于 2012-10-24T21:36:33.987 回答