2014-11-06 18 views
12

Il pacchetto Matrix definisce un intero gruppo di metodi S4 per moltiplicare le matrici, che vengono inviate dalle funzioni generiche S4 %*%, crossprod e tcrossprod.Importazione delle funzioni S4 dal pacchetto Matrix

Come si importano i metodi "% *%", da utilizzare nel mio pacchetto? Questo pezzo di codice non riesce quando corro devtools::document():

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

voglio fare in modo questa funzione utilizza i metodi moltiplicazione di matrici sparse dal pacchetto di Matrix se x è una matrice sparsa. Ma quando ho eseguito devtools::document() ottengo il seguente errore:

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

Leggere l'ultima sezione ci: http://r-pkgs.had.co.nz/namespace.html – Roland

+0

'@import methods' non ha riparato il mio problema, né @importMethodsFrom Matrix "% '* % "'. – Zach

risposta

8

Si dovrebbe usare @importMethodsFrom e rimuovere le virgolette attorno all'operatore. Probabilmente vorrai anche esportare la funzione con @export (potresti già saperlo ma rende la risposta più completa). Il seguente funziona per me senza errori.

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