在 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 .
谢谢 。
在 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 .
谢谢 。
这应该是非常有效的:
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)