gpt4 book ai didi

r - 使用 Rscript,是否有一种不错的方法来抑制非脚本输出?

转载 作者:行者123 更新时间:2023-12-04 02:15:37 32 4
gpt4 key购买 nike

这个问题在这里已经有了答案:




9年前关闭。




Possible Duplicate:
R suppress startupMessages from dependency



我读过有关使用 sink("NUL") 的信息/ sink("/dev/null") ,但他们都没有解决我遇到的问题。即使我包裹了 library() sink("NUL") 中的命令和 sink() ,我对 Rscript 的调用输出了我不想看到的所有信息:
Loading required package: Matrix
Loading required package: methods
Loading required package: lattice
Loaded glmnet 1.8

Loading required package: MASS
Loading required package: lme4

Attaching package: 'lme4'

The following object(s) are masked from 'package:stats':

AIC, BIC

Loading required package: R2WinBUGS
Loading required package: coda

Attaching package: 'coda'

The following object(s) are masked from 'package:lme4':

HPDinterval

Loading required package: abind
Loading required package: foreign

arm (Version 1.5-05, built: 2012-6-6)

Working directory is C:/Users/andrews/bootstraps/user/_branches/ER-PoC/Bootstraps/R


Attaching package: 'arm'

The following object(s) are masked from 'package:coda':

traceplot

[1] "client=51" "date='01-01-2011'"
[1] "01-01-2011"
[1] 51

最后的东西是我真正想要的唯一输出,也是我似乎可以用 sink() 抑制的唯一输出命令。似乎真的应该对 Rscript 进行论证。这会抑制这个输出(如果我 source 我的脚本在控制台中,它甚至不会显示)......任何输入?

最佳答案

安德鲁,我遇到了同样的事情,suppressMessages()没有删除所有额外的输出,而是使用 sink()capture.output() 的形式缠绕在suppressMessages()作品。

$ rscript --vanilla -e 'library(Rmpfr)'
Loading required package: methods
Loading required package: gmp
---->8----
Loading C code of R package 'Rmpfr': GMP using 32 bits per limb
---->8----


$ rscript --vanilla -e 'suppressMessages( library(Rmpfr) )'
Loading C code of R package 'Rmpfr': GMP using 32 bits per limb


$ rscript --vanilla -e 'msg.out <- capture.output( suppressMessages( library(Rmpfr) ) )'

加载 Rmpfr 包时发生的事情是使用 message 编写的几个表现良好的启动消息。连接以及使用 output 的不太好的消息联系。当然,您可以创建和操作 sink()靠你自己,但这就是 capture.output()已经设置好了。

也许设置一个详细的 arg 以获得更多的控制会有所帮助:
$ cat sample.R
#!/c/opt/R/R-2.15.0/bin/rscript --vanilla

cmd_args <- commandArgs( TRUE );

if( length( cmd_args ) > 0 ) {
eval( parse( text = cmd_args[1] ) )
}

if( exists( "verbose" ) ) {
library( Rmpfr )
} else {
msg.trap <- capture.output( suppressMessages( library( Rmpfr ) ) )
}

print("Hello")

其中产生::
$ ./sample.R
[1] "Hello"


$ ./sample.R "verbose=TRUE"
Loading required package: methods
Loading required package: gmp

Attaching package: 'gmp'
---->8----
[1] "Hello"

你可以在那里玩很多东西,但至少你可以看到如何完全抑制 msg 输出。

希望能帮助到你。玩得开心!

关于r - 使用 Rscript,是否有一种不错的方法来抑制非脚本输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11855072/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com