[英]How to avoid printing / showing messages
之前曾有人問過這個問題,但沒有一個答案對我有用。
我正在使用bioconductor.org中的rhdf5庫讀取HDF5文件:source(“ http://bioconductor.org/biocLite.R ”); biocLite( “rhdf5”); 庫(rhdf5);
當我使用h5read函數讀取包含引用的特定變量時,將顯示以下警告消息:
“警告:類型'REFERENCE'的h5read尚未實現。將值替換為NA's
(它不會像RStudio中的錯誤和警告一樣以紅色顯示。只是黑色)
警告對我來說還可以,因為我不需要那些引用。 但是我使用此函數讀取數百個變量,因此我的屏幕被這些消息污染了。 例如:
a <-h5read(f, "/#Link2#")
Warning: h5read for type 'REFERENCE' not yet implemented. Values replaced by NA's
Warning: h5read for type 'REFERENCE' not yet implemented. Values replaced by NA's
我已經嘗試了所有發現的建議(capture.output,抑制消息/警告,接收器,選項(警告,最大打印,show.error.messages):
capture.output(a <- h5read(f, "/#Link2#"), file='/dev/null')
invisible(capture.output(a <- h5read(f, "/#Link2#"), file='/dev/null'))
suppressWarnings(suppressMessages(a <- h5read(f, "/#Link2#")))
suppressForeignCheck
和suppressPackageStartupMessages
{sink("/dev/null"); a <-h5read(f, "/#Link2#"); sink()}
{options(warn=-1, max.print=1,show.error.messages=FALSE); a <-h5read(f, "/#Link2#") }
它們都繼續產生相同的警告消息。
有誰知道我可以嘗試的其他方法,或者為什么這些方法不起作用?
圖書館如何管理打印所有跳過的消息? 聽起來我可能做錯了什么...
任何幫助表示贊賞。
作為參考,這些是我使用的其他帖子:
您應該要求maintainer("rhdf5")
提供解決方案-減少打印消息的頻率,並使用標准的R警告-消息來自C代碼,並使用printf()而不是Rf_warning()
或Rf_ShowMessage()
或Rprintf()
/ REprintf()
。
這是問題的例證
> library(inline)
> fun = cfunction(character(), 'printf("hello world\\n"); return R_NilValue;')
> fun()
hello world
NULL
> sink("/dev/null"); fun(); sink()
hello world
>
和解決方案-使用Rf_warning()
生成R警告。 該示例還說明了如何通過Rprintf()
寫入R的輸出流,然后如何使用接收器捕獲輸出。
> fun = cfunction(character(), 'Rf_warning("hello world"); return R_NilValue;')
> x = fun()
Warning message:
In fun() : hello world
> x = suppressWarnings(fun())
> fun = cfunction(character(), 'Rprintf("hello world\\n"); return R_NilValue;')
> sink("/dev/null"); fun(); sink()
>
但是,這些都不能直接幫助您!
UPDATE維護人員更新了該包的“開發”分支(版本2.17.2)中的代碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.