2012-10-24 6 views
2

R에서 dgCMatrix가 0이 아닌 값을 벡터로 설정하고 싶습니다.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 . 

감사합니다.

답변

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 . 

편집 : 0과 1 이외의 값이

M 경우, 대신 다음 중 하나를 사용할 수 있습니다

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) 
+0

고맙습니다. – user189594

관련 문제