5.5 用 R 写入文本,分析输出到文件

5.5.1 问题

如果你想将输出信息写到文件。

5.5.2 方案

sink() 函数将会重定向输出到一个文件,而不是 R 的终端。请注意,如果您在脚本中使用sink(),并且在结果输出到终端前崩溃,那么你将不会看到任何对你命令的响应。在不带任何参数的情况下调用 sink() ,将返回输出到终端。

  1. # 开始写入到文件
  2. sink('analysis-output.txt')
  3. set.seed(12345)
  4. x <-rnorm(10,10,1)
  5. y <-rnorm(10,11,1)
  6. # 添加一些内容
  7. cat(sprintf("x has %d elements:\n", length(x)))
  8. print(x)
  9. cat("y =", y, "\n")
  10. cat("=============================\n")
  11. cat("T-test between x and y\n")
  12. cat("=============================\n")
  13. t.test(x,y)
  14. # 停止写入
  15. sink()
  16. # 附加到文件
  17. sink('analysis-output.txt', append=TRUE)
  18. cat("Some more stuff here...\n")
  19. sink()

输出文件的内容:

  1. x has 10 elements:
  2. [1] 10.585529 10.709466 9.890697 9.546503 10.605887 8.182044 10.630099 9.723816
  3. [9] 9.715840 9.080678
  4. y = 10.88375 12.81731 11.37063 11.52022 10.24947 11.8169 10.11364 10.66842 12.12071 11.29872
  5. =============================
  6. T-test between x and y
  7. =============================
  8. Welch Two Sample t-test
  9. data: x and y
  10. t = -3.8326, df = 17.979, p-value = 0.001222
  11. alternative hypothesis: true difference in means is not equal to 0
  12. 95 percent confidence interval:
  13. -2.196802 -0.641042
  14. sample estimates:
  15. mean of x mean of y
  16. 9.867056 11.285978
  17. Some more stuff here...