2009-11-29 109 views
1

我不認爲我需要詳細解釋代碼的作用。問題的關鍵是,當外循環執行chisq.test,我得到這樣的結果(預計):chisq.test在循環中不打印結果

 Chi-squared test for given probabilities 

data: observed 
X-squared = 185912, df = 5, p-value < 2.2e-16 

但是當我嘗試做一個循環測試,預期的結果不會出現

total <- dim(crs$dataset_init)[1] 
expected.fr <- cl.popul/total 

for (i in 1:dim(cl.vs.Onerall)[1]) { 
     if (cl.vs.Onerall[i,1] > 0) { 
      observed <- cl.vs.Onerall[i,2:(clust_no + 1)] 

      print(rownames(cl.vs.Onerall)[i]) 
      chisq.test(observed, p=expected.fr) 
      print("------------------------------") 
    } 
} 

任何想法將不勝感激!

+0

你是否得到了輸出 - rownames和破折號也出現了嗎? – schnaader 2009-11-29 17:58:06

+0

你注意到你的三行輸出中間有什麼遺漏嗎? – hadley 2009-11-29 19:43:30

+0

是rownames和破折號確實顯示 – 2009-11-29 20:49:21

回答

1

正如評論中所建議的,只需使用print即可確保將測試結果打印到控制檯。除了使用chisquare測試的代碼之外,其餘代碼應該保持不變。

total <- dim(crs$dataset_init)[1] 
expected.fr <- cl.popul/total 

for (i in 1:dim(cl.vs.Onerall)[1]) { 
     if (cl.vs.Onerall[i,1] > 0) { 
      observed <- cl.vs.Onerall[i,2:(clust_no + 1)] 

      print(rownames(cl.vs.Onerall)[i]) 
      print(chisq.test(observed, p=expected.fr)) # edited line 
      print("------------------------------") 
    } 
}