有没有办法记录或记录R函数的输出?

时间:2015-12-01 18:23:50

标签: r rstudio

假设我在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中自动记录输出?

2 个答案:

答案 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。如果您想了解catprint之间的区别,请参阅What is the difference between cat and print?