2013-07-11 67 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.做到這一點的方式這將取代醜陋的循環:

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) 

你真的不應該rbinding連續排在一起的時候你真正想要做的是選擇一個行的子集。非常低效。

+0

除非我失去了一些東西,該函數仍然不會返回任何東西,這可能是OP的主要問題。 – Marius

+0

@Marius實際上,'print'返回它打印的對象。 –

+0

非常感謝您提供非常有幫助的答案。 –