0

私はRを使用して、保存された.csvファイルを特定のペアワイズ方法で開き、統計テストを実行しています(mantel.rtestパッケージ「ade4」に含まれています)。.csv ファイルは、「fileAX」または「fileBY」のいずれかの順番で名前が付けられます。ここで、X と Y は整数です。

このテストの結果を 1 つのファイルに保存したいのですが、いくつか問題が発生しています。

コードは次のとおりです (「貼り付け」の非効率的な使い方をお許しください:

library(ade4)

x <- 1:15; y <- 1:15

filename1 <- paste(paste(c("fileA"), 1:15, sep = ""), ".csv", sep = "")
filename2 <- paste(paste(c("fileB"), 1:15, sep = ""), ".csv", sep = "")

for (i in seq(along=x)) {
  M1 <- read.table(paste("C:\\scripts\\", filename1[i], sep = ""), header = FALSE, sep = ",")

  for (j in seq(along=y)) {

    M2 <- read.table(paste("C:\\scripts\\", filename2[j], sep = ""), header = FALSE, sep = ",")

    mantelout <- mantel.rtest(dist(matrix(M1, 9, 9)), dist(matrix(M2, 9, 9)), nrepet = 99)

    write.table(mantelout, file = "C:\\results\\mantelout") 

  }
}

これを実行しようとすると、次のエラー メッセージが表示されます。

**Error in as.data.frame.default(x[[i]], optional = TRUE, stringsAsFactors = stringsAsFactors) : 
  cannot coerce class '"rtest"' into a data.frame**

「unlist」や「as.vector」などのさまざまな関数を使用して、「mantelout」をより使いやすい形式に変換しようとしましたが、役に立ちませんでした。何かご意見は?

ありがとう、WAW

編集: R 環境でのこのテストの出力は次のようになります。

Monte-Carlo test
Observation: 0.5324712
Call: mantel.rtest(m1 = dist(matrix(M1, 9, 9)), m2 = dist(matrix(M2, 9, 9)), nrepet = 99)
Based on 99 replicates
Simulated p-value: 0.01"
4

2 に答える 2

0

str(rtest)オブジェクトの構造を確認するために使用しrtestます。data.frame に収まらないのは当然です。代わりにリストに入れてみてください。を使用してリストをファイルとして保存し、save(my.list, file="mylist.RData")後で を使用して再読み込みできますload("mylist.RData")

于 2010-07-28T15:04:52.760 に答える
0

capture.output+writeLinesコンボを使用できます:

# example from help("lm")
ctl <- c(4.17,5.58,5.18,6.11,4.50,4.61,5.17,4.53,5.33,5.14)
trt <- c(4.81,4.17,4.41,3.59,5.87,3.83,6.03,4.89,4.32,4.69)
group <- gl(2,10,20, labels=c("Ctl","Trt"))
weight <- c(ctl, trt)
lm.D9 <- lm(weight ~ group)

writeLines(capture.output(lm.D9), file="my analysis.txt")

あなたの場合は次のようになります。

writeLines(capture.output(mantelout), file = "C:\\results\\mantelout") 
于 2011-02-01T11:44:16.723 に答える