2009-11-29 218 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("------------------------------") 
    } 
}