#r
#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, который позволил бы мне создать пользовательскую справочную функцию, вызываемую help(fun)
на Python, и распечатать результаты. Я могу написать python.help
функцию, которая делает это, но я надеялся на более простое решение.
Ответ №1:
Вы могли бы попробовать что-то вроде следующего:
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.
Я считаю, что было бы лучше, если бы вы создавали файлы .Rd для своих функций R.