我正在使用一个包中的函数来打印很多东西到控制台。是否可以使用此功能但忽略所有打印命令?
示例:
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))
有没有办法在没有额外包装的情况下解决这个问题,或者无法改变功能本身?
答案 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
来发送这些内容。