11

私は最近、パッケージ間の競合が原因でエラーが発生する可能性があることを知りました。つまり、2 つ (またはそれ以上) のパッケージに同様の名前の関数が含まれている可能性があります。search ()このコードは、R が読み取る方法で順序付けられたパッケージのリストを生成することを知っています。argsR によって読み取られる関数を提供するコード もあります。
最初に知りたいのは、パッケージ間の競合が原因でエラーが発生しているかどうかを検出する方法と、競合しているパッケージを見つける方法です。最後に、競合が検出された後、どうすれば R に特定のパッケージの関数を使用させることができるでしょうか?

4

3 に答える 3

9

@Paul が言うように、(たとえばlibrary関数を介して) パッケージをアタッチすると、次のようになります。

> library("gdata", lib.loc="C:/Program Files/R/R-2.15.3/library")
gdata: read.xls support for 'XLS' (Excel 97-2004) files ENABLED.

gdata: read.xls support for 'XLSX' (Excel 2007+) files ENABLED.

Attaching package: ‘gdata’

The following object(s) are masked from ‘package:stats’:

    nobs

The following object(s) are masked from ‘package:utils’:

    object.size

「The following object(s) are masked」と表示された場合、これらの関数への呼び出しは、R によって新しいパッケージ内の関数への呼び出しと見なされることを意味しますgdata

これは次の方法で回避できます。

> nobs
function (object, ...) 
UseMethod("nobs")
<environment: namespace:gdata>
> stats::nobs
function (object, ...) 
UseMethod("nobs")
<bytecode: 0x0000000008a92790>
<environment: namespace:stats

それが役立つことを願っています

于 2013-04-11T13:26:28.693 に答える
9

R が新しいパッケージをロードする場合、その新しいパッケージに作業環境に既に存在する関数が含まれている場合、警告が生成されます。したがって、パッケージのロード中に注意を払うと、競合があるかどうかを確認できます。競合が発生した場合、次のように特定のパッケージの関数を R に強制的に使用させることができます。

package_name::function_name
于 2013-04-11T13:02:01.823 に答える