2014-11-06 111 views
12

Matrix软件包定义了一整套用于乘法矩阵的S4方法,这些方法由S4通用函数%*%,crossprodtcrossprod调度。从Matrix软件包导入S4功能

如何导入用于我自己的包中的“%*%”方法?

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

我想确保这一功能使用来自矩阵封装稀疏矩阵乘法方法,如果x是一个稀疏矩阵:当我运行devtools::document()这段代码失败。但是,当我运行devtools::document()我得到以下错误:

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

阅读最后一节有:http://r-pkgs.had.co.nz/namespace.html – Roland 2014-11-06 16:09:04

+0

'@import methods'并没有解决我的问题,也没有'@importMethodsFrom黑客帝国“%* %“'。 – Zach 2014-11-06 16:39:02

回答

8

您应该使用@importMethodsFrom和删除各地运营商的报价。您可能还想用@export导出函数(您可能已经知道这一点,但它会使答案更加完整)。以下工作对我来说没有错误。

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