2013-03-22 15 views
6

Próbuję zaimportować metodę S3, predict z innego pakietu pls. Mam funkcję, która wykorzystuje te przewidywane wartości. Problemem jest to, podczas kompilacji pakietu:Importowanie metody S3 z innego pakietu

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

I już ułożyła this Gist jako minimalny przykład, który podkreśla mój problem i zawiera następujący plik R:

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

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

Odpowiedz

7

Głównym problemem jest tutaj pls nie definiuje funkcji/metody predict. Zapewnia kilka metod generycznych, ale nie generycznych.

Musisz zaimportować ogólny z pakietu stats, jeśli jest to potrzebne - nie jestem pewien, czy robisz tak, jak nie tworzysz funkcji, która wymaga lub opiera się na generycznych. Na minimum trzeba

#' @importFrom stats predict 

chociaż może zajść potrzeba/chcesz importować całą statystyk nazw - zależy co pakiet robi poza funkcją swój aktualnie pracuje.

Innym problemem jest to, że predict.mvr jest nie wyprowadzany z pls nazw

> 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, ...) 

Jako takie nie można po prostu zaimportować go. W związku z tym Twój pakiet musi mieć Depends: pls w DESCRIPTION w celu znalezienia prawidłowej metody predict.

+1

Lub zamiast wstawiania 'pls' w Opis DEPENDS, po prostu użyj' pls ::: predict.mvr' bezpośrednio (i upewnij się, że 'pls' jest przynajmniej w Opis IMPORT, aby zagwarantować jego instalację). – Gregor

+0

Nie jest dobrze używać 'pls ::: predict.mvr' bezpośrednio, potrójne znaki są znakiem, że kręcisz się tam, gdzie autor nie chciał. –

Powiązane problemy