2012-01-03 129 views
4

有人可以幫我處理這段代碼。在循環中,我將p值保存在f中,然後我想將p值寫入文件,但我不知道使用哪個函數寫入文件。我在寫函數時出錯。將p值寫入R中的文件

{ 
f = fisher.test(x, y = NULL, hybrid = FALSE, alternative = "greater", 
       conf.int = TRUE, conf.level = 0.95, simulate.p.value = FALSE) 

write(f, file="fisher_pvalues.txt", sep=" ", append=TRUE) 
} 

Error in cat(list(...), file, sep, fill, labels, append) : 
    argument 1 (type 'list') cannot be handled by 'cat' 
+1

只是想感謝@Helen提供完整的代碼和完整的錯誤消息。是的,這是一個n00b問題,但是這個信息很容易提供正確答案。 – 2012-01-03 17:25:16

回答

6

從fisher.test的返回值是(如果你閱讀文檔):

值:

A list with class ‘"htest"’ containing the following components: 

p.value:測試的p值。

conf.int:置信區間的比值比。僅在 中出現2乘2的情況,並且參數'conf.int = TRUE'。

etc等R不知道如何寫這樣的東西到一個文件。更確切地說,它不知道你想如何寫入文件。

如果你只想寫P值,然後得到P值,並寫:

write(f$p.value,file="foo.values",append=TRUE) 
+0

或者您可以使用'save'將整個對象寫入文件。 – joran 2012-01-03 16:39:16

+0

@joran - 看起來海倫希望在* .txt文件中得到結果,所以值得注意的是,'save'將對象的R特定二進制表示寫入文件。 – 2012-01-03 16:45:45

+0

@ JoshO'Brien是的,好點。 – joran 2012-01-03 16:54:27

4

f'htest'類的一個對象,因此它寫入文件會寫不僅僅是p值更。

如果想簡單結果的書面陳述保存到一個文件,就像他們出現在屏幕上,你可以使用capture.output()這樣做:

Convictions <- 
    matrix(c(2, 10, 15, 3), 
      nrow = 2, 
      dimnames = 
      list(c("Dizygotic", "Monozygotic"), 
       c("Convicted", "Not convicted"))) 
f <- fisher.test(Convictions, alternative = "less") 

capture.output(f, file="fisher_pvalues.txt", append=TRUE) 

更有可能的是,你只想存儲p值。在這種情況下,你需要將它寫入文件之前,從f提取它,使用代碼是這樣的:

write(paste("p-value from Experiment 1:", f$p.value, "\n"), 
     file = "fisher_pvalues.txt", append=TRUE)