2011-07-20 5 views
6

Как я могу документировать использование функций-членов ссылочного класса?Как я могу зарегистрировать R-класс?

если я пишу Rd файл с \usage блока, как я избежать WARNING

Functions/methods with usage in documentation object 'XmlDoc' but not in code: 
    $ new 

Я бы ожидать, что \usage блок, чтобы позволить мне писать такие вещи, как:

obj <- ClassName$new(par1, par2, ...) 
obj$method1(oth1, ...) 

и то я буду документировать параметры в блоке \arguments.

Если я сделаю это, R CMD check жалуется

Assignments in \usage in documentation object 'ClassName': 

и не распознает методы как объекты коды мне нужен документ.

как сейчас, я пишу Rd файлы без \usage блока и писать код выше в \examples блоке, но у меня нет места, чтобы документировать аргументы и этот способ check имеет очень мало, чтобы проверить на самом деле. Поскольку я не удовлетворен этим, теперь я спрашиваю сообщество о текущей общей практике.

+0

Я не знаю, относится ли это также к ссылочным классам, но для классов S3 вы должны использовать '\ alias' для решения этой же проблемы. – Andrie

+0

Это не то, как работают блоки использования. Прочитали ли вы справки о встроенной документации по эталонному классу? – hadley

+0

@hadley: Я думал, что у меня есть, но, очевидно, я пропустил предмет вещей '\ S4method'. к какой документации вы относитесь, что ее описывает? – mariotomo

ответ

5

Я не знаю, если это правильный путь, но то, что я сделал, чтобы иметь раздел Метода, а затем положить документацию метода в интерьере описывает.

+0

ok, но точнее: внутри раздела '\ usage' я могу добавить записи' \ S4method'. для каждого документа S4-метода я должен добавить запись '\ alias'. записи в '\ alias' не нуждаются в списке параметров. – mariotomo

+0

Если я понимаю вас правильно, тогда вы правы. Для метода «foo» я стараюсь сделать псевдоним для «foo» и «foo».class-method ", где foo - это имя метода, а класс - это имя класса. Опять же, я не могу сказать, что это правильный путь, как я их сделал. – geoffjentry

+0

Jeoff, проверьте мой другой ответ, это соответствует тому, что вы также делаете? – mariotomo

4

, если я правильно понял, Методы сравнительных классов : S4 методы, поэтому применяется documenting S4 classes and methods.

, чтобы сделать этот ответ немного более автономным, вот что я делаю в случае класса Logger в пакете logging.oo.

это код, который я хотел документировать, с некоторым омиссисом [...].

Logger <- setRefClass("Logger", 
         fields=list(name = "character"), 
         methods=list(
         setLevel = function(newLevel) { [...] }, 
         getLevel = function() { [...] }, 
         addHandler = function(...) { [...] }, 

это соответствующее содержимое файла .Rd (ы):

\alias{\S4method{new}{Logger}} 
\alias{\S4method{setLevel}{Logger}} 
\alias{\S4method{getLevel}{Logger}} 
\alias{\S4method{addHandler}{Logger}} 
[...] 
\usage{ 
\S4method{new}{Logger}(name) 
\S4method{setLevel}{Logger}(newLevel) 
\S4method{getLevel}{Logger}() 
\S4method{addHandler}{Logger}(...) 

в то время как в файле NAMESPACE я просто указать, что я экспортировать класс Logger, я не указываю его методы: все они автоматически экспортируются.