2017-10-25 1 views
0

저는 정수 벡터를가집니다. 그리고이 벡터에 의존하는 이진 행렬을 만들어야합니다. 사실, 행렬 0의 각 행을 얻고 싶습니다. 그것의 인덱스가 과 같은 열을 w 값에 넣는다.각 행의 조건에 따라 이진 행렬을 얻는 방법

01000 
00100 
00001 
00010 

그래서 난이 코드를 실행하지만 난 결과가 belown 표시되지 않은 :

w=c(2,3,5,4) 
nr=length(w) 
M=matrix(1*nr*length(w),nrow=nr,ncol=max(w)) 

이 결과는이 예를 들어 것과 같아야합니다 : 이 예입니다

for (i in 1:nr) 
{ 
for(j in 1:max(w)) 
{ if(w[j]==j) 
    M[i,j]=1 
else 
    M[i,j]=0 
} 
} 

도움에 감사드립니다!

+1

로 그 세포를 대체 할 수 암호. 또한 '벡터'또는 '매트릭스'와 같은 태그를 추가하면 더 많은 가시성을 얻을 수 있습니다. 환영! – cakes88

답변

1

우리는 모두 0 행렬을 만든 다음 그와지고있어 결과를 추가하는 것이 유용 할 수 있음 1.

w <- c(2, 3, 5, 4) 
nr <- length(w) 
M <- matrix(0, nrow = nr, ncol = max(w)) 

for (i in 1:nr){ 
    M[i, w[i]] <- 1 
} 

M 
    [,1] [,2] [,3] [,4] [,5] 
[1,] 0 1 0 0 0 
[2,] 0 0 1 0 0 
[3,] 0 0 0 0 1 
[4,] 0 0 0 1 0 
2

이 시도 :

`[<-`(matrix(0,nrow=length(w),ncol=max(w)),cbind(seq_along(w),w),1) 
#  [,1] [,2] [,3] [,4] [,5] 
#[1,] 0 1 0 0 0 
#[2,] 0 0 1 0 0 
#[3,] 0 0 0 0 1 
#[4,] 0 0 0 1 0 
관련 문제