【问题标题】:writing a ".rtest" output to file, using the R program (ex) via write.table?将“.test”输出写入文件,使用 R 程序(例如)来 write.table?
【发布时间】:2011-03-22 05:06:34
【问题描述】:

我正在使用 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"

【问题讨论】:

    标签: r dataframe coerce


    【解决方案1】:

    使用str(rtest) 查看rtest 对象的结构:它不适合data.frame 也就不足为奇了。试着把它放在一个列表中。您可以使用save(my.list, file="mylist.RData") 将列表保存为文件,稍后使用load("mylist.RData") 重新加载。

    【讨论】:

    • 再次感谢。有没有一种简单的方法可以将输出(如“打印”测试结果后在 R 编辑器中显示的信息中)保存为文本文件?
    • 你确定你需要那个吗?如果是这样,您最好使用您感兴趣的 rtest 对象的属性构建您自己的 data.frame。但是对于查看分析结果,R 对象更好,因为摘要基础的数据也可用于如果你需要它。
    • 我不知道如何将屏幕输出转储到 R 中的文件中,除非使用 unix 重定向(我从您使用 windows 的其他问题中的文件路径收集)。这将是一个很好的问题......
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-06-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多