Matrix包定义了一大堆用于乘法矩阵的S4方法,这些方法由S4泛型函数%*%
,crossprod
和tcrossprod
调度。
如何导入“%*%”方法,以便在我自己的包中使用?当我运行devtools::document()
时,这段代码失败了:
#' @title my function
#'
#' @description Does magic Matrix stuff
#' @import methods
#' @importFrom Matrix "%*%" Diagonal
myfun <- function(x, y){
x %*% Diagonal(x=y)
}
如果x是稀疏矩阵,我想确保此函数使用Matrix包中的稀疏矩阵乘法方法。但是当我运行devtools::document()
时,我收到以下错误:
Updating mypackage documentation
Loading mypackage
Error: object ‘%*%’ is not exported by 'namespace:Matrix'
答案 0 :(得分:9)
您应该使用@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)
}