2014-11-06 15 views
12

Gói Matrix xác định toàn bộ bó phương pháp S4 để nhân ma trận, được gửi bởi các hàm chung chung S4 %*%, crossprodtcrossprod.Nhập chức năng S4 từ gói Ma trận

Làm cách nào để nhập các phương thức "% *%", để sử dụng trong gói của riêng tôi? Đoạn mã này không thành công khi tôi chạy devtools::document():

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

Tôi muốn chắc chắn chức năng này sử dụng phương pháp Matrix nhân thưa thớt từ gói Matrix nếu x là một ma trận thưa thớt. Nhưng khi tôi chạy devtools::document() tôi nhận được lỗi sau:

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

Đọc phần cuối cùng có: http://r-pkgs.had.co.nz/namespace.html – Roland

+0

'@import methods' không khắc phục được vấn đề của tôi, cũng không' @importMethodsFrom Matrix "% * % "'. – Zach

Trả lời

8

Bạn nên sử dụng @importMethodsFrom và loại bỏ các dấu ngoặc kép quanh các nhà điều hành. Bạn cũng có thể muốn xuất khẩu chức năng với @export (bạn có thể đã biết điều này nhưng nó làm cho câu trả lời hoàn chỉnh hơn). Các công trình sau đây cho tôi mà không có lỗi.

#' @title my function 
#' 
#' @description Does magic Matrix stuff 
#' @import methods 
#' @importFrom Matrix Diagonal 
#' @importMethodsFrom Matrix %*% 
#' @export 
myfun <- function(x, y){ 
    x %*% Diagonal(x=y) 
} 
Các vấn đề liên quan