2013-07-11 4 views
1

저는 R이 새롭고 루프를 다루고 있습니다. 두 개의 행렬은 s1 (NA 값 포함) &입니다. B.이 루프를 시도하고 출력을 검색하는 데 문제가 있습니다.루프 출력을 검색합니다 R

m1<-function(s1,B) 
{ 
    for(i in 1:nrow(s1)) 
    { 
    if(is.na(s1[i,])==T) {mi<-rbind(mi,B[i,])} 
    } 
    print(mi) 
} 
outB<-m1(s1,B) 

B [i,]의 행 바인딩에서 새 data.matrix를 만들고 싶습니다. B [i,]는 s1 [i,]와 일치해야합니다. 어떤 도움을 주시면 감사하겠습니다.

답변

1

은 그래,이 못생긴 루프를 대체 할 정말 R.에서이 작업을 수행하는 방법이 아니다 : 당신이 정말하고 싶었던 모든 선택하십시오 때 당신은 정말 함께 연속 행을 rbinding해서는 안

m1<-function(s1,B) # use vector indexing rather than a loop 
{ mi <- B[ !is.na(s1), ] # notice logical index and no "==" 
    print(mi) 
} 
outB<-m1(s1,B) 

행의 서브 세트. 매우 비효율적이다.

+0

내가 누락 된 것이 아니라면, 함수는 여전히 OP를 리턴하는 주요한 문제 일 것입니다. – Marius

+0

@ 마리우스 실제로'print'는 인쇄하는 객체를 반환합니다. –

+0

매우 도움이되는 답변에 감사드립니다. –