重新定义? (帮助)某些类的功能

时间:2016-10-13 16:42:53

标签: r

是否可以为R类重新定义?函数(帮助函数)?

我尝试过定义

`?.myclass` = function(x) "foo"
help.myclass = function(x) "foo"

但它并没有改变?的行为。

f = function() "bar"
class(f) = "myclass"
?f                   # doesn't work
help(f)              # doesn't work
help.myclass(f)      #works

我正在编写一个使用PythonInR导入一些Python函数的包。我希望我可以在导入的Python函数中添加一个类,这样我就可以在Python中创建一个调用help(fun)的自定义帮助函数并打印结果。我可以编写一个python.help函数来执行此操作,但我希望能够提供更加无缝的解决方案。

1 个答案:

答案 0 :(得分:3)

您可以尝试以下内容:

library(PythonInR)

`?` <- function(e1, e2) UseMethod("?")
`?.default` <- utils::`?`

`?.pyFunction` <- function(e1, e2) {
    topicExpr <- substitute(e1)
    pyHelp(deparse(topicExpr))
}

pyImport("getcwd", from="os", as="os")

? os.getcwd

此外,您需要在命名空间文件中使用以下内容。

export("?")
S3method("?", "default")
S3method("?", "pyFunction")

但是要使这个函数起作用,重要的是你的函数在Python和R中具有相同的名称。

我相信为你的R函数创建.Rd文件会更好。