2016-10-13 5 views
1

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でhelp(fun)というカスタムヘルプ関数を作成し、その結果を出力できるように、インポートされたPython関数にクラスを追加できることを期待していました。これを行うpython.help関数を書くことができますが、よりシームレスなソリューションを望んでいました。

答えて

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") 

でも動作するように、この機能のためには、私はあなたがあなたのRの機能のための.Rdファイルを作成するかもしれない方が良いだろうと信じて、あなたの関数はPythonとRに同じ名前を持つことを

重要です。

+0

これが私の問題を解決しました。ありがとう! – mikeck