2012-10-18 10 views
0

내 행렬의 대각선에 -5를 넣으려고합니다. if 문을 사용하고 있습니다. 하지만 내 if 문장이 잘못되었습니다. 아무도 나에게 도움을 줄 수 있습니까?행렬의 문장 - 대각선 경우

X= rbind(c(1.2,3.4,10.3),c(2,8,78),c(45,-36,8)) 
array(X,dim=c(3,3)) 
if (X != (1.2,8.0)){ 
    cat(X) 
} else { 
    cat(-5) 
} 
+7

[입문 매뉴얼] (http://cran.r-project.org/doc/manuals/R-intro.html)을 정말로 읽어야합니다. 나는 진지해. 얼간이가 되려고하지 마라. 정말. 약속 할께. 이것은 당신이 삭제 한 질문과 매우 흡사합니다 ... 그리고 [당신의 이전 질문] (http://stackoverflow.com/q/12946070/271616)과 같은 '오히려'의 오해를 보여줍니다. –

답변

3
X <- rbind(c(1.2, 3.4, 10.3), c(2, 8, 78), c(45, -36, 8)) 
diag(X) <- -5 

여호수아는 말처럼 바보가 되려고 노력하지 않은 - 당신이 쓴 것을 많이 그냥 작동하지 않기 때문에 당신이 연구를 처음 사용하는 것을 매우 분명하다.

if 문 내부의 조건은 길이가 1이어야하며 전체 행렬을 피드하고자하는 것처럼 보입니다. if와 it의 벡터화 된 버전이 ifelse이지만 매트릭스 용으로 원하는대로 작동하지 않습니다.

cat은 콘솔에 인쇄되지만 매트릭스의 요소는 사용자를 대신하지 않습니다. 실제로이를 성취하기 위해서는 일종의 대체 작업이 필요합니다.

교체를 수행하기 위해 어떤 요소가 대각선 고유인지 수동으로 확인하는 것은 좋지 않습니다. 더 좋은 방법이 있습니다. 조슈아가 연루된 소개 매뉴얼에서 그 중 일부는 발견됩니다. 행운을 빕니다.

+1

감사합니다. Dason,하지만 diag 기능을 사용하지 않고이 작업을 수행하려고합니다. – Bill

+7

@Bill 언제 임무가 끝나나요? – joran