在R中抑制一个命令的输出

我正在寻求抑制一个命令的输出(在这种情况下, applyfunction)。

没有使用sink()可以做到这一点吗? 我已经find了下面描述的解决scheme,但是如果可能的话,希望在一行中完成。

如何抑制输出

目前还不清楚,为什么你要这样做没有接收sink ,但你可以包装任何命令invisible()函数,它会抑制输出。 例如:

 1:10 # prints output invisible(1:10) # hides it 

否则,你总是可以用分号和圆括号组合成一行:

 { sink("/dev/null"); ....; sink(); } 

使用capture.output()函数。 它非常像一次性的接收sink()而不像invisible() ,它可以抑制的不仅仅是打印消息。 将文件参数设置为UNIX上的/dev/null或Windows上的NUL 。 例如,考虑德克的说明:

 > invisible(cat("Hi\n")) Hi > capture.output( cat("Hi\n"), file='NUL') > 

R只会自动打印未指定expression式的输出,所以只要将apply的结果赋值给一个variables,它就不会被打印出来。

你可以使用下面的'capture.output'。 这使您可以稍后使用数据:

 log <- capture.output({ test <- CensReg.SMN(cc=cc,x=x,y=y, nu=NULL, type="Normal") }) test$betas 
 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