R言語におけるMann Whitney Test (もしくはt-test)の計算結果の出力する方法
非常に初歩的な質問で恐縮なのですが、下記コードによる計算結果をtxt等に出力する方法を教えていただけないでしょうか?
下記のように4列、複数行のデータ(csv)があり、これを各列すべての組み合わせでMann-Whitney-testを行います。
A1 A2 A3 A4
31 42 33 54
56 74 48 69
11 12 13 14
16 57 18 19
41 22 63 24
26 57 28 22
31 32 33 31
36 37 78 31
41 42 43 41
いろいろなサイトを見て回り、下記のようなコードを使えば、解析可能であることがわかりました。
Data <- read.csv("test.csv", header = TRUE, skip = 0)
library(plyr)
combos <- combn(ncol(Data),2)
adply(combos, 2, function(x) {
test <- wilcox.test(Data[, x[1]], Data[, x[2]])
out <- data.frame("var1" = colnames(Data)[x[1]]
, "var2" = colnames(Data[x[2]])
, "p.value" = sprintf("%.3f", test$p.value)
)
return(out)
})
しかし、データ数(列数)を増やした場合に、大量の結果が出力されてしまい、[ reached getOption("max.print") -- 9397 行を無視しました ] のように出力されます。
最終的には下記にようなテーブルにしたいのですが、ここまで整っていなくとも現時点で出力される結果を、txtなんかにできればと考えています。
A1 A2 A4 A4
A1 0.03 0.06 0.05 0.9
A2 0.99 0.1. 0.56 0.23
A3 0.32 0.07 0.xx 0.xx
A4 0.xx 0.xx 0.xx 0.xx
素人考えで下記のように、write,tableを挿入してみましたが、「 0 列 0 行のデータフレーム」と出力され、空のtextが生成されました。
adply(combos, 2, function(x) {
test <- t.test(Data[, x[1]], Data[, x[2]])
out <- data.frame("var1" = colnames(Data)[x[1]]
, "var2" = colnames(Data[x[2]])
, "p.value" = sprintf("%.100f", test$p.value))
write.table(out, file = "result3.txt", sep = "\t")
})
ご指導のほど、よろしくお願いいたします。