是否可以调用函数但忽略它的所有print() - 命令?

时间:2017-11-28 16:39:18

标签: r

我正在使用一个包中的函数来打印很多东西到控制台。是否可以使用此功能但忽略所有打印命令?

示例:

f <- function(x){
print("Starting process 1/5")
print("Starting process 2/5")
print("Starting process 3/5")
print("Starting process 4/5")
print("Starting process 5/5")
Save <<- x+2
}

期望输出:

保存设置为x + 2,但没有任何内容打印到控制台。

我试过但没有工作的东西:

invisible(f(1))

sink(f(1))

有没有办法在没有额外包装的情况下解决这个问题,或者无法改变功能本身?

3 个答案:

答案 0 :(得分:2)

尝试invisible(capture.output(f(1)))

答案 1 :(得分:1)

junk <- capture.output(f(1))
Save
# 3

答案 2 :(得分:0)

使用sink的正确方法是设置将打印所有控制台输出的文件,例如

sink("r-output")

将告诉R开始将此行之后的所有控制台输出写入当前目录中的文件r-output(您可以将文件名更改为您想要的任何内容)。

如果您想再次在控制台中开始编写R输出,则需要再次调用该函数但不提供文件名来停止sink进程:

sink()

请注意,这只会将print之类的输出写入此文件,但仍会在控制台中打印任何消息,警告或错误。您也可以在第一次调用type = c("output","message")时指定sink来发送这些内容。