在一些临床试验分析中,一般要求所有输出的结果中不能有errors和warnings;对于SAS而言,我们只需要查看SAS导出的log日记即可,但对于R而言,Rstudio/R都没有现成的功能来完成这个步骤。还好R可以通过sink()
函数功能来实现
以下均是网上搜索整理的,若有更好的办法,可以交流下哈。。。
先指定log文件,通过sink
函数连接log文件,其中若想导出error/warnings/message等提示信息,需要增加type = "message"
参数,默认是output
参数,即无提示信息
logfile <- file("test.log")
sink(file = logfile, append = TRUE, type = "output")
sink(file = logfile, append = TRUE, type = "message")
接着加入测试代码
a <- 11
b <- 2
print(a + b)
message("Just a message")
warning("This is a warning")
stop("This is an error message")
最后还是通过sink
函数来“断开”连接,注:若前面用了两次sink
函数,则最后也要用两次sink来结束,如:
sink()
sink(type = "message")
若想确定是否真正结束了连接,则可通过下述方法检查(若不结束连接,你会发现一些error/warning都无法正常显示)
sink.number(type = c("output")) # 正常退出,提示0
sink.number(type = c("message")) # 正常退出,提示2
或者通过closeAllConnections()
函数退出全部连接
closeAllConnections()
最后用file.show("test.log")
函数查看下console输出结果:
[1] 13
Just a message
Warning message:
This is a warning
错误: This is an error message
以上的方法个人觉得不是太好用。。。其实最好的还是用R命令行的方法
先写一个R脚本
a <- "a"
a
How come I do not see this in log
接着在本地windows电脑或者服务器上运行
$ R CMD BATCH script.R & # linux
# C:\R-3.6.2\bin\R.exe CMD BATCH script.R & # windows
最后直接会出个script.Rout
文件,如下所示:
R version 3.6.2 (2019-12-12) -- "Dark and Stormy Night"
Copyright (C) 2019 The R Foundation for Statistical Computing
Platform: x86_64-w64-mingw32/x64 (64-bit)
R是自由软件,不带任何担保。
在某些条件下你可以将其自由散布。
用'license()'或'licence()'来看散布的详细条件。
R是个合作计划,有许多人为之做出了贡献.
用'contributors()'来看合作者的详细情况
用'citation()'会告诉你如何在出版物中正确地引用R或R程序包。
用'demo()'来看一些示范程序,用'help()'来阅读在线帮助文件,或
用'help.start()'通过HTML浏览器来看帮助文件。
用'q()'退出R.
> a <- "a"
> a
[1] "a"
> How come I do not see this in log
错误: unexpected symbol in "How come"
停止执行
这样的log文件应该更加合适一点,大家觉得呢。。。
参考资料:
How to save all console output to file in R?
Saving R Output to a File
本文出自于http://www.bioinfo-scrounger.com转载请注明出处