1

R のライブラリと install.packages 関数を置き換える関数を作成しようとしています。これは、インストールされている場合は関数をロードし、インストールされていない場合はインストールしてロードします。最初のケースでは問題なく動作しますが、インストール後でもこれを使用して関数をインストールしようとすると、「... という名前のパッケージがありません」というエラーが表示されます。パッケージは正しくインストールされますが、同じ機能の 1 回の実行でインストールとロードに失敗しました。それが修正されることを期待して sleep コマンドを追加しましたが、修正されませんでした。理由を知っている人はいますか?

insist = function(name){
    #enables entering package name without quotes
    name = substitute(name) 
    name = as.character(name)

    if (!require(name, character.only = T)) {
        install.packages(name)
        Sys.sleep(2)
        library(name, character.only = T)
    }
}
4

1 に答える 1

2

そのメッセージは、実際にはorrequire()ではなく andから来ています。パッケージがまだ検索パスに追加されているに違いありません (少なくとも私にとってはそうでした)。ですから、その警告を抑えることにもっと積極的にならなければならないと思います。これを試して。install.packages()library()

insist = function(name){
    #enables entering package name without quotes
    name = substitute(name) 
    name = as.character(name)

    if (suppressWarnings(!require(name, character.only = T, quietly=T))) {
        install.packages(name)
        library(name, character.only = T)
    }
}
于 2014-06-18T22:06:44.817 に答える