Ако не експортирате методите, тогава потребителите (или в командния ред, или се опитват да използват вашите класове и методи в техния собствен пакет чрез импортиране) няма да могат да ги използват -- вашият клас ще бъде показан с show,ANY-method
.
Вие не документирате общия show
, а по-скоро метода, подходящ за вашия клас, show,myPackageSpecialClass-method
. Ако във вашето NAMESPACE вие
import(methods)
exportMethods(show)
(имайте предвид, че няма начин да експортирате само някои методи в генеричното шоу) и да не предоставите документация, R CMD check
ще се оплаче
* checking for missing documentation entries ... WARNING
Undocumented S4 methods:
generic 'show' and siglist 'myPackageSpecialClass'
All user-level objects in a package (including S4 classes and methods)
should have documentation entries.
See the chapter 'Writing R documentation files' in the 'Writing R
Extensions' manual.
Вашият пример (знам, че не е предназначен да бъде сериозен метод за показване :) ) е добра илюстрация защо методите могат да бъдат документирани -- обяснявайки на потребителя защо всеки път, когато се опитват да покажат обекта, получават NA
, когато са били очаквайки някакво описание на обекта.
Един подход към документацията е да се групират методи с класа в един Rd файл, myPackageSpecialClass-class.Rd
. Този файл ще съдържа псевдоним
\alias{show,myPackageSpecialClass-method}
и Използване
\S4method{show}{myPackageSpacialClass}(object)
Това работи, стига да не се използва фантастично множествено изпращане, т.е. е ясно за кой клас се прилага даден метод. Ако потребителят поиска помощ с ?show
, той винаги се насочва към страницата за помощ на пакета с методи. За помощ относно вашите методи / клас те ще трябва да поискат този конкретен вид помощ. Има няколко начина да направите това, но моят любим е
class ? myPackageSpecialClass
method ? "show,myPackageSpecialClass"
Това няма да е интуитивно за средния потребител; (клас|метод)? ... формулировката не се използва широко и спецификацията на "generic,signature" изисква много разбиране за това как работи S4, включително вероятно посещение на selectMethod(show, "myPackageSpecialClass")
(тъй като методът може да бъде имплементиран в клас, от който myPackageSpecialClass наследява) или showMethods(class="myPackageSpecialClass", where=getNamespace("myPackage"))
(защото се чудите какво можете да правите с myPackageSpecialClass).
person
Martin Morgan
schedule
20.01.2012