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是稀疏矩阵,我想确保这个函数使用矩阵包中的稀疏矩阵乘法方法。但当我运行devtools::document()
时,我会得到以下错误:
Updating mypackage documentation
Loading mypackage
Error: object ‘%*%’ is not exported by 'namespace:Matrix'
您应该使用@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)
}