Один из лучшего продуманного элемента по сравнению с аргументами атрибута прибывает из британские инструкции GovTalk . Это определяет методы моделирования, используемые для связанных с правительством обменов XML, но это стоит на его собственных достоинствах и достойно рассмотрения.
Схемы ДОЛЖНЫ быть разработаны так, чтобы элементы были основными держателями информационного содержания в экземплярах XML. Атрибуты больше подходят для содержания вспомогательных метаданных †“простые объекты, предоставляющие больше информации о содержании элемента. Атрибуты не ДОЛЖНЫ использоваться для квалификации других атрибутов, где это могло вызвать неоднозначность.
В отличие от элементов, атрибуты не могут содержать структурированные данные. Поэтому элементы предпочтены как основные держатели информационного содержания. Однако позволение использования атрибутов содержать метаданные о содержании элемента (например, формат даты, единицы измерения или идентификации набора значений) может сделать документ экземпляра более простым и легким для понимания.
дата рождения А могла бы быть представлена в сообщении как:
1975-06-03
Однако больше информации могло бы быть запрошено, такой как, как та дата рождения была проверена. Это могло быть определено как атрибут, заставив элемент в сообщении быть похожим:
1975-06-03
следующее было бы несоответствующим:
1975-06-03
не ясно здесь, квалифицирует ли Код VerifiedBy или атрибут ValueSet. Более соответствующее представление было бы:
View of Birth Certificate
1975-06-03
Когда вы говорите
, функция выполняла другие действия в зависимости от класса объекта брошенный на него
, вы уже находитесь в центре диспетчерского механизма S3! Так Я бы рекомендовал прочитать книгу по программированию на R, например,
или другие ресурсы из , этот вопрос SO в R books вместе с одним или двумя примерами пакета из богатого набора CRAN пакеты.
Мой мыслительный процесс при поиске кода функции обычно выглядит следующим образом:
Сначала введите имя функции
Случай 1: показывает кодОтлично, готово.
Пример: diag
Случай 2: функция представляет собой однострочную инструкцию UseMethod У вас есть метод S3.
Введите methods (fnname)
, чтобы увидеть доступные методы,
затем getAnywhere (fnname.myclass)
.
Пример: mean
methods(mean)
getAnywhere(mean.default)
Случай 3: функция содержит оператор .Internal или .Primitive
Функция написана на C для повышения производительности. Загрузите копию исходного кода R и извлеките архив. Найдите имя функции в каталоге src.
EDIT: Вы также можете найти файл с помощью поиска по сайту Google или Yahoo.
site:https://svn.r-project.org/R/trunk/src functionname
End EDIT
Пример: qnorm
Простой поиск в Windows для "qnorm" в каталоге src исходного кода R открывается файл qnorm.c, содержащий определение функции.
РЕДАКТИРОВАТЬ: qnorm.c также является лучшим результатом поиска
site:https://svn.r-project.org/R/trunk/src qnorm
End EDIT
Случай 4: Все еще не удается найти функциюВероятно, это метод класса S4.
Введите class (myobj)
, чтобы найти класс.
Введите showMethods (class = "myclass")
, чтобы найдите доступные методы для этого класса.
Тип getMethods ("fnname", "myclass")
.
Пример: plot pixmap
Для этого требуется пакет pixmap.
library(pixmap)
pixie <- pixmap(1:12, nrow=3, ncol=4)
class(pixie) #"pixmap"
showMethods(class="pixmap")
getMethod("plot", "pixmap")
Например, plot () будет делать разные вещи в зависимости от объекта. Вы можете увидеть конкретные функции построения графиков (называемые методами) с помощью plot.ts (), plot.lm () и т. Д., То есть plot () вызовет plot.ts (), если передан объект ts. Как правило, plot.xxx () применяется к объектам класса xxx. Если для класса не существует определенного метода, используется plot.default ().
Функция plot () называется универсальной функцией, потому что она может применяться ко многим различным классам. Другие общие универсальные функции - это summary (), print () и предсказать ().
Как говорит Дирк, стоит прочитать документацию по методам и классам S3.