我希望抑制一个命令的输出(在本例中为apply
函数)。
不使用就可以做到这一点sink()
吗?我在下面找到了所描述的解决方案,但如果可能的话,希望在一行中做到这一点。
capture.output
。或*_ply
从plyr包中使用。
lapply
Apply的apply函数而不打印输出,那么从他的plyr
软件包中选择'l_ply'可能是最合适的选择。
Answers:
尚不清楚为什么不使用来执行此操作sink
,但是您可以将任何命令包装在invisible()
函数中,它将抑制输出。例如:
1:10 # prints output
invisible(1:10) # hides it
否则,您始终可以将内容用分号和括号合并为一行:
{ sink("/dev/null"); ....; sink(); }
invisible()
仅禁止打印表达式,它不是sink()
单线的。
apply
根据问题抑制的返回invisible(apply(matrix(1:10), 1, as.numeric))
。
{ sink("/dev/null"); ....; sink(); }
我绝对喜欢capture.output
像capture.output
上面那样有效地做,要好得多(看看源代码,它像上述方式那样调用接收器,并在其中添加一些不错的东西)。
idw
在Windows下无法正常使用。我认为最好的解决方案是使用sink
使用capture.output()
功能。它的工作原理非常像一次性的,与之sink()
不同invisible()
,它不仅可以抑制打印消息,还可以抑制更多的工作。/dev/null
在UNIX或NUL
Windows上将file参数设置为。例如,考虑Dirk的注释:
> invisible(cat("Hi\n"))
Hi
> capture.output( cat("Hi\n"), file='NUL')
>
capture.output(x <- log(2))
之后x
的值是log(2)
……
invisible(cat("Dataset: ", dataset, fill = TRUE))
invisible(cat(" Width: " ,width, fill = TRUE))
invisible(cat(" Bin1: " ,bin1interval, fill = TRUE))
invisible(cat(" Bin2: " ,bin2interval, fill = TRUE))
invisible(cat(" Bin3: " ,bin3interval, fill = TRUE))
在行的末尾或下一行产生不带NULL的输出
Dataset: 17 19 26 29 31 32 34 45 47 51 52 59 60 62 63
Width: 15.33333
Bin1: 17 32.33333
Bin2: 32.33333 47.66667
Bin3: 47.66667 63