假设我在R中运行一些代码。例如:
x <- 1
if (x == 0.1){
print('X = 0.1')
} else if (x > 0.1){
print('X is bigger than 0.1 ')
} else {
print('X is smaller than 0.1')
}
如果我查看R studio中的历史文件,它会告诉我运行此条件语句但它不会显示结果(即X大于0.1)。
有没有办法在R或R studio中自动记录输出?
答案 0 :(得分:6)
直接输出到日志文件和屏幕:
sink("myfilename", append=FALSE, split=TRUE) # for screen and log
仅将输出返回到屏幕:
sink()
来自Quick-R
答案 1 :(得分:2)
您需要合并sink()
和cat()
。
首先,在您的脚本或控制台中,您可以使用sink()
启动日志文件并同时向终端发送文本:
sink("myfile.log", append=TRUE, split=TRUE)
这也会将数据附加到现有日志文件中。
然后在函数中用print
替换cat
,以便日志文件捕获输出。所以,在你的例子中:
sizex <- function(x){
if (x ==0.1){
cat('X = 0.1')
} else if (x > 0.1){
cat('X is bigger than 0.1 ')
} else {
cat('X is smaller than 0.1')
}
}
然后我们使用函数:
x <- 1
sizex(x)
如果由于某种原因您想要停止记录,只需输入sink()
即可。关于cat()
的好处是,如果您使用sink()
,它将会代表您恢复将文本推送到终端,而不会做任何努力。
N.B。如果您想了解cat
和print
之间的区别,请参阅What is the difference between cat and print?。