6

install.package特に他の人のコードを試したり、例を実行したりする必要がある場合は、この関数を頻繁に使用していることがわかります。

パッケージをインストールしてロードする関数を書いています。次のことを試しましたが、うまくいきませんでした:

inp <- function(PKG)
{
  install.packages(deparse(substitute(PKG)))
  library(deparse(substitute(PKG)))
}

私がタイプしたときinp(data.table)、それは言う

Error in library(deparse(substitute(PKG))) : 
  'package' must be of length 1

この場合、ライブラリ名を引数として渡すにはどうすればよいですか? の関数への引数として任意の種類のオブジェクトを渡すことに関する情報を誰かに教えてもらえれば幸いですR

4

1 に答える 1

10

library()デフォルトでは、最初の引数として文字または名前のいずれかを受け入れるため、エラーがスローされます。その最初の引数を見てdeparse(substitute(PKG))、その名前のパッケージを探しても当然のことながら見つけることができません。

最初の引数として文字列を期待するcharacter.only=TRUEように指示する を設定すると、問題が解決するはずです。library()これを試して:

f <- function(PKG) {
    library(deparse(substitute(PKG)), character.only=TRUE)
}

## Try it out
exists("ddply")
# [1] FALSE
f(plyr)
exists("ddply")
# [1] TRUE
于 2013-02-25T20:54:22.800 に答える