2012-12-31 55 views
-1

在R終端我可以發出沒有as.matrix通用功能

> as.matrix 
function (x, ...) 
UseMethod("as.matrix") 
<bytecode: 0x7ffd5430a898> 
<environment: namespace:base> 

我想實現一個as.matrix方法的類。在我的[R包我有

as.matrix.pdist = function(x, ...) { do stuff ... } 

當我安裝我的包,我看到

Creating a generic function for ‘as.matrix’ from package ‘base’ in package ‘pdist’ 

當我實例pdist的一個實例,並調用as.matrix,我as.matrix.pdist方法不會被調用。這是否意味着as.matrix不是一個通用函數?爲什麼我在查看as.matrix的來源時看到UseMethod調用?我如何正確實施as.matrix

+1

我最好的猜測是,你還沒有導出你的方法...?看看[Writing R Extensions]的第1.6.2節(http://cran.r-project.org/doc/manuals/R-exts.html)。 – joran

+1

您是否在名稱空間中註冊了該方法? –

+0

,您可以使用'setGeneric'使「創建通用函數」消息消失,如'?Methods'中所述。 –

回答

2

啊,得加S3method(as.matrix,pdist)命名空間文件

+1

是的,就像它在文檔中所說的那樣... –