欠落しているRパッケージをチェックし、必要に応じてそれらをインストールするための一連の関数をコーディングしようとしています。StackOverflowでそれを行うためのいくつかの良いコードがあります:ここから始めてください。
特にRは成功したメッセージでさえ赤インクで返すので、関数をできるだけ静かにしたいと思います。quietly = TRUE
したがって、私は引数をとの両方library
に渡そうとしましたrequire
。
ただし、これらのオプションは機能しないようです。
# attempt to get a silent fail
require(xyz, quietly = TRUE)
Warning message:
In library(package, lib.loc = lib.loc, character.only = TRUE, logical.return = TRUE, :
there is no package called ‘xyz’
どうすればrequire
黙って失敗することができますか、そして私はquietly
オプションについて何を得ていませんか?
ドキュメントには次のように書かれています。
quietly
論理的です。TRUEの場合、パッケージのロードを確認するメッセージは出力されません。ほとんどの場合、パッケージのロードが失敗してもエラー/警告は出力されません。
しかし、私の個人的な経験では、「ほとんどの場合」は「ほとんどない」はずです。それについてのあなたの経験について喜んで聞きます。理論的根拠:学生を支援するためのコーディング関数。
追加。quiet = TRUE
同じ質問がに当てはまりますinstall.packages()
。プログレスバーのみが削除され、中央値のユーザーには使用されない場合でも、続く「ダウンロードされたバイナリパッケージが含まれています」というメッセージ(黒で印刷されています)は削除されません。
追加。これが誰かに興味があるかもしれない場合に備えて、これまでのコードは次のとおりです。
## getPackage(): package loader/installer
getPackage <- function(pkg, load = TRUE, silent = FALSE, repos = "http://cran.us.r-project.org") {
if(!suppressMessages(suppressWarnings(require(pkg, character.only = TRUE, quietly = TRUE)))) {
try(install.packages(pkg, repos = repos), silent = TRUE)
}
if(load) suppressPackageStartupMessages(library(pkg, character.only = TRUE, quietly = TRUE))
if(load & !silent) message("Loaded ", pkg)
}
## Not run:
x <- c("ggplot2", "devtools") # etc.
lapply(x, getPackage, silent = TRUE)
quietly
上記の関数での使用は、期待どおりに機能しないように思われるため、やめることを考えています。コア開発チームから説明を得るために、おそらくRユーザーリストにそれについて尋ねるべきです。私のsuppressMessages(suppressWarnings(require(...)))
経験では、回避策は不安定になる可能性があります。