我希望抑制一个命令的输出(在本例中为apply函数)。
不使用就可以做到这一点sink()吗?我在下面找到了所描述的解决方案,但如果可能的话,希望在一行中做到这一点。
capture.output。或*_ply从plyr包中使用。
lapplyApply的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或NULWindows上将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