看内部方法

时间:2011-04-29 17:31:30

标签: r

我希望能够看到使用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()的输出结构?或者我可以吗?

2 个答案:

答案 0 :(得分:11)

您希望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不关心为这些函数中的一个或另一个提供何种方法类型,那么用户友好性似乎会得到改善。

答案 1 :(得分:8)

你也可以这样做:

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