Как исследовать код функции в R, это - чувствительный класс объекта

Один из лучшего продуманного элемента по сравнению с аргументами атрибута прибывает из британские инструкции GovTalk . Это определяет методы моделирования, используемые для связанных с правительством обменов XML, но это стоит на его собственных достоинствах и достойно рассмотрения.

Схемы ДОЛЖНЫ быть разработаны так, чтобы элементы были основными держателями информационного содержания в экземплярах XML. Атрибуты больше подходят для содержания вспомогательных метаданных †“простые объекты, предоставляющие больше информации о содержании элемента. Атрибуты не ДОЛЖНЫ использоваться для квалификации других атрибутов, где это могло вызвать неоднозначность.

В отличие от элементов, атрибуты не могут содержать структурированные данные. Поэтому элементы предпочтены как основные держатели информационного содержания. Однако позволение использования атрибутов содержать метаданные о содержании элемента (например, формат даты, единицы измерения или идентификации набора значений) может сделать документ экземпляра более простым и легким для понимания.

дата рождения А могла бы быть представлена в сообщении как:

 1975-06-03 

Однако больше информации могло бы быть запрошено, такой как, как та дата рождения была проверена. Это могло быть определено как атрибут, заставив элемент в сообщении быть похожим:

1975-06-03 

следующее было бы несоответствующим:

1975-06-03   

не ясно здесь, квалифицирует ли Код VerifiedBy или атрибут ValueSet. Более соответствующее представление было бы:

     
   View of Birth Certificate     
   1975-06-03
 

9
задан PaulHurleyuk 17 September 2009 в 15:02
поделиться

3 ответа

Когда вы говорите

, функция выполняла другие действия в зависимости от класса объекта брошенный на него

, вы уже находитесь в центре диспетчерского механизма S3! Так Я бы рекомендовал прочитать книгу по программированию на R, например,

  • (классический, но устаревший) Venables / Ripley "S Programming",
  • Gentleman "Bioinformatics with R",
  • Brown / Murdoch "Первый курс статистического программирования с R ",
  • Chambers" Программное обеспечение для анализа данных: программирование с помощью R ",

или другие ресурсы из , этот вопрос SO в R books вместе с одним или двумя примерами пакета из богатого набора CRAN пакеты.

7
ответ дан 4 December 2019 в 06:11
поделиться

Мой мыслительный процесс при поиске кода функции обычно выглядит следующим образом:

Сначала введите имя функции

Случай 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")
32
ответ дан 4 December 2019 в 06:11
поделиться

Например, plot () будет делать разные вещи в зависимости от объекта. Вы можете увидеть конкретные функции построения графиков (называемые методами) с помощью plot.ts (), plot.lm () и т. Д., То есть plot () вызовет plot.ts (), если передан объект ts. Как правило, plot.xxx () применяется к объектам класса xxx. Если для класса не существует определенного метода, используется plot.default ().

Функция plot () называется универсальной функцией, потому что она может применяться ко многим различным классам. Другие общие универсальные функции - это summary (), print () и предсказать ().

Как говорит Дирк, стоит прочитать документацию по методам и классам S3.

4
ответ дан 4 December 2019 в 06:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: