2014-11-06 8 views
12

Das Matrix-Paket definiert eine ganze Reihe von S4-Methoden zum Multiplizieren von Matrizen, die von den generischen S4-Funktionen %*%, crossprod und tcrossprod ausgelöst werden.Importieren von S4-Funktionen aus dem Matrix-Paket

Wie importiere ich die "% *%" Methoden zur Verwendung in meinem eigenen Paket? Dieses Stück Code schlägt fehl, wenn ich devtools::document() laufen:

#' @title my function 
#' 
#' @description Does magic Matrix stuff 
#' @import methods 
#' @importFrom Matrix "%*%" Diagonal 
myfun <- function(x, y){ 
    x %*% Diagonal(x=y) 
} 

ich diese Funktion verwendet die spärliche Matrix-Multiplikation Methoden aus dem Matrix-Paket überprüfen will, wenn x eine spärliche Matrix ist. Aber wenn ich devtools::document() laufen bekomme ich folgende Fehlermeldung:

Updating mypackage documentation 
Loading mypackage 
Error: object ‘%*%’ is not exported by 'namespace:Matrix' 
+0

Lesen Sie den letzten Abschnitt gibt: http://r-pkgs.had.co.nz/namespace.html – Roland

+0

'@import methods' nicht mein Problem beheben, noch' @importMethodsFrom Matrix „% * % "'. – Zach

Antwort

8

Sie sollten @importMethodsFrom verwenden und entfernen Sie die Anführungszeichen um den Betreiber. Sie möchten wahrscheinlich auch die Funktion mit @export exportieren (Sie wissen vielleicht bereits, aber es macht die Antwort vollständiger). Folgendes funktioniert bei mir ohne Fehler.

#' @title my function 
#' 
#' @description Does magic Matrix stuff 
#' @import methods 
#' @importFrom Matrix Diagonal 
#' @importMethodsFrom Matrix %*% 
#' @export 
myfun <- function(x, y){ 
    x %*% Diagonal(x=y) 
}