在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 .
谢谢。
答案 0 :(得分: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)