15

predict別のパッケージからS3メソッドをインポートしようとしていますpls。これらの予測値を利用する関数があります。問題は、パッケージをコンパイルするときです。

Error : object 'predict' is not exported by 'namespace:pls'

この要点を、私の問題を浮き彫りにし、次のRファイルを含む最小限の例としてまとめました。

#' Test function
#' 
#' @importFrom pls predict
#' 
#' @export

myfunc <- function(x){
  stopifnot(class(x) == "mvr")
  predict(x)*2
}
4

1 に答える 1

11

これを要約すると、オリジナル (以下) は古くなり、誤りや誤解を招く箇所があります。

predict近位の問題は、plsパッケージで名前が付けられた関数がないことです。predictエクスポートされていないS3 メソッドがいくつかありますが、そのようなものはありませんpredict。したがって、これをインポートすることはできません。predictジェネリックはstatsパッケージにあり、以下で説明するようにそこからインポートする必要があります。

R で正しいメソッドを使用できるようにするにはDepends: pls、パッケージに が必要です。具体的にインポートできるものはplsにはありません。DESCRIPTIONpredict

また、統計predict名前空間からジェネリックをインポートする必要があるため、追加します

#' @importFrom stats predict

これにより、パッケージの名前空間にジェネリックがインポートされます。また、統計パッケージが必要であることを示すためにファイルに追加することもImports: statsできます。以前は、R に同梱されている一連の基本パッケージ (つまり、R に同梱されている非推奨パッケージ) に対する依存関係を宣言する必要はありませんでした。DESCRIPTION


オリジナル

ここでの主な問題は、plsが関数/メソッドを定義していないことpredictです。ジェネリックに対していくつかのメソッドを提供しますpredictが、ジェネリック自体は提供しません。

必要に応じて、統計パッケージからジェネリックをインポートする必要があります-ジェネリックを必要とする、またはジェネリックに基づいて構築する関数を作成していないため、そうするかどうかはわかりません。最低限必要なものは

#' @importFrom stats predict

ただし、統計名前空間全体をインポートする必要がある/したい場合があります-現在取り組んでいる機能を超えてパッケージが何をするかによって異なります。

もう 1 つの問題は、 pls名前空間からエクスポートされないpredict.mvrことです。

> require(pls)
Loading required package: pls

Attaching package: ‘pls’

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

    loadings

> predict.mvr
Error: object 'predict.mvr' not found
> pls::predict.mvr
Error: 'predict.mvr' is not an exported object from 'namespace:pls'
> pls:::predict.mvr
function (object, newdata, ncomp = 1:object$ncomp, comps, type = c("response", 
    "scores"), na.action = na.pass, ...) 

そのため、そのままインポートすることはできません。したがって、正しいメソッドを見つけるにDepends: plsは、パッケージに が含まれている必要があります。DESCRIPTIONpredict

于 2013-03-22T06:05:54.947 に答える