我希望能够看到当我使用str()时使用的函数,因为我想为了我自己的目的而修改它作为另一个函数.
当我打字时str(),我得到以下内容:
function (object, ...)
UseMethod("str")
<environment: namespace:utils>
Run Code Online (Sandbox Code Playgroud)
所以我试过,getAnywhere(str):
2 differing objects matching ‘str’ were found
in the following places
.GlobalEnv
package:utils
namespace:utils
Use [] to view one of them
Run Code Online (Sandbox Code Playgroud)
但是文档中没有关于使用语法的内容 []
所以我试过,getAnywhere(str)[1]:
function (object, ...)
UseMethod("str")
<environment: namespace:utils>
Run Code Online (Sandbox Code Playgroud)
叹.好吧,那怎么样showMethods(str):
Function "str":
<not a generic function>
Run Code Online (Sandbox Code Playgroud)
那么,我如何看待输出的构造str()?或者我可以吗?
Rei*_*son 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
Run Code Online (Sandbox Code Playgroud)
使用getAnywhere(str)并不是很有用,因为它str()是可见的,所以如果你只是str在提示符下运行,你会得到相同的结果.您需要getAnywhere()查看上面列出的隐藏方法:
getAnywhere(str.default)
Run Code Online (Sandbox Code Playgroud)
例如.
遗憾的是你需要知道列出方法的函数的通用类型; 如果R不关心为这些功能中的一个或另一个提供何种方法类型,那么用户友好性似乎会得到改善.
你也可以这样做:
> methods(by)
[1] by.data.frame by.default
> getS3method("by", "data.frame")
function (data, INDICES, FUN, ..., simplify = TRUE)
{
...
}
<environment: namespace:base>
Run Code Online (Sandbox Code Playgroud)