0

したがって、私の目標は、最初にパッケージをロードしようとする関数を作成することです。ロードできない場合は、インストールしてからロードしようとします。このタイプのコードをどこかで見たことがあり、関数内で必要なパッケージを常に指定するいくつかの関数で使用しました。これは、関数に一般化するための優れたツールになると考えました。非常に多くのパッケージがあり、既にインストールしたものを忘れがちです。

問題は、lib および lib2 では、オブジェクト"package"の内容の名前 ( ) ではなく、オブジェクトの名前 ( ) を渡すこと"SpatialPack"です。オブジェクト ( ) 内の場所を指定するなど、いくつかのことを試しました"package[1]"が、何もしませんでした。

オブジェクトの名前ではなく、オブジェクトのコンテンツを呼び出すための助けは素晴らしいでしょう。ありがとう!

  get.package<-function(package){
  lib<-require(package)
  if(lib==TRUE)
  {
    print(paste(c(package,"Package successfully loaded")))
  }
 if(lib==FALSE)
 {
 print(paste(c("Attempting to install and load",package,"Package")))
 install.packages(package)
 lib2<-require(package)
 if (lib2==TRUE)
 {
 print(paste(c(package,"Package successfully installed and loaded")))
 }
 else print(paste(c(package,"Package unable to be installed")))

 }
 }

 get.package("SpatialPack")
4

1 に答える 1

2

requireとはどちらもlibrary便宜上非標準評価を行いますが、パラメータでこれを抑制することができます。コードを次のように変更してみてください。

 require(package,  character.only = TRUE)

デモンストレーション:

> strangeName <- "sets"
> require(strangeName, character.only=TRUE)
Loading required package: sets

Attaching package: ‘sets’

The following object is masked from ‘package:data.table’:

    set
于 2014-03-23T23:13:04.347 に答える