2011-04-29 72 views
9

我希望能夠看到當我使用str()時使用的函數,因爲我想爲了我自己的目的將它修改爲另一個函數。看內部方法

當我鍵入str(),我得到如下:

function (object, ...) 
UseMethod("str") 
<environment: namespace:utils> 

所以,我想,getAnywhere(str)

2 differing objects matching ‘str’ were found 
in the following places 
    .GlobalEnv 
    package:utils 
    namespace:utils 
Use [] to view one of them 

但也沒什麼可說的語法應該是什麼使用[]

文檔中

所以我試過了,getAnywhere(str)[1]

function (object, ...) 
UseMethod("str") 
<environment: namespace:utils> 

嘆氣。好吧,那showMethods(str)

Function "str": 
<not a generic function> 

所以,我怎麼看到的輸出爲str()建設?或者我可以嗎?

+1

您必須爲創建本地'str'對象時,我這樣做是一個乾淨的會話'getAnywhere(STR)'只查找'utils的功能'。 – 2011-04-29 17:37:55

回答

9

你想methods()爲S3通用如str()

> methods(str) 
[1] str.data.frame* str.Date*  str.default* 
[4] str.dendrogram* str.logLik*  str.POSIXt*  

    Non-visible functions are asterisked 

使用getAnywhere(str)是不是真的有用,因爲str()可見,所以你得到同樣的結果,如果你只是在提示符下運行str。您需要getAnywhere()來查看上面列出的隱藏方法:

getAnywhere(str.default) 

例如。

慚愧你需要知道什麼樣的通用函數是列出的方法;如果R不關心爲這些功能中的一個或其他功能提供了哪種類型的方法,用戶友好性似乎會得到改善。

7

你也可以做這樣的:

> methods(by) 
[1] by.data.frame by.default 
> getS3method("by", "data.frame") 
function (data, INDICES, FUN, ..., simplify = TRUE) 
{ 
    ... 
} 
<environment: namespace:base>