簡體   English   中英

使用R程序(ex)通過write.table將“ .rtest”輸出寫入文件嗎?

[英]writing a “.rtest” output to file, using the R program (ex) via write.table?

我正在使用R以特定的成對方式打開一些保存的.csv文件並執行統計測試( mantel.rtest ,在軟件包“ ade4”中找到)。 .csv文件順序命名為“ fileAX”或“ fileBY”,其中X和Y是整數。

我想將此測試的結果保存在一個文件中,但是遇到了一些問題。

這是代碼(請原諒效率低下的“粘貼”用法:

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”轉換為更友好的格式,但無濟於事。 有什么想法嗎?

謝謝,哇

編輯:我應該注意在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"

使用str(rtest)來查看rtest對象的結構:不足為奇的是它不會容納在data.frame中。 嘗試將其放在列表中。 您可以使用save(my.list, file="mylist.RData")將列表另存為文件,並稍后使用load("mylist.RData")重新加載load("mylist.RData")

您可以使用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") 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM