Введение в R версия 3.5.2 (2018-12-20). Заметки по R: среда программирования для анализа данных и графики. У. Н. Венэбльз
Читать онлайн книгу.Например, если у объекта будет класс "data.frame», то он будет напечатан определенным способом, функция plot () выведет на экран его графически определенным способом, и другие, так называемые универсальные функции, такие как summary (), будут реагировать на него как на параметр, способом применимым к его классу.
Чтобы удалить временно эффект класса, используйте функцию unclass (). Например, если у winter есть класс "data.frame» то:
> winter
напечатает его в форме фрейма данных, которая скорее походит на матрицу, тогда как:
> unclass (winter)
напечатает его как обычный список. Только в довольно специальных ситуациях следует использовать это средство, но каждый раз для достижения согласования идеи класса и универсальных функций.
Универсальные функции и классы будут обсуждены далее в Разделе 10.9 [Ориентация объекта], но только кратко.
4. Упорядоченные и неупорядоченные факторы
Фактор – векторный объект, используемый для спецификации дискретной классификации (группировки) компонентов других векторов одинаковой длины. R поддерживает как упорядоченные, так и не упорядоченные факторы. Хотя «реальное» применение факторов имеет место в формулах модели (см. Раздел 11.1.1 [Противоположности]), здесь рассмотрим на специальный пример.
4.1. Специальный пример
Предположим, например, имеется выборка 30 налоговых деклараций из всех штатов и территорий Австралии, и их индивидуальное происхождение указывается символьным вектором аббревиатуры штата как:
> state <– c («tas», «sa», «qld», «nsw», «nsw», «nt», «wa», «wa»,
«qld», «vic», «nsw», «vic», «qld», «qld», «sa», «tas»,
«sa», «nt», «wa», «vic», «qld», «nsw», «nsw», «wa»,
«sa», «act», «nsw», «vic», «vic», «act»)
Заметим, что в случае символьного вектора, «sorted» означает сортировку в алфавитном порядке.
Создаются факторы аналогичным образом с помощью функции factor ():
> statef <– factor (state)
Функция print () обрабатывает факторы несколько иначе, чем другие объекты:
> statef
[1] tas sa qld nsw nsw nt wa wa qld vic nsw vic qld qld sa
[16] tas sa nt wa vic qld nsw nsw wa sa act nsw vic vic act
Levels: act nsw nt qld sa tas vic wa
Чтобы выяснить уровни фактора можно использовать функцию level ():
> levels (statef)
[1] «act» «nsw» «nt» «qld» «sa» «tas» «vic» «wa»
4.2. Функция tapply () и массивы с переменной длиной строк
Чтобы продолжить предыдущий пример, предположим, что у нас есть доходы от каждого налогоплательщика в другом векторе (в подходящих крупных денежных единицах):
> incomes <– c (60, 49, 40, 61, 64, 60, 59, 54, 62, 69, 70, 42, 56,
61, 61, 61, 58, 51, 48, 65, 49, 49, 41, 48, 52, 46,
59, 46, 58, 43)
Чтобы вычислить средний доход в выборке по каждому штату используем теперь специальную функцию tapply ():
> incmeans <– tapply (incomes, statef, mean)
дающей вектор средних с компонентами, маркированными уровнями:
Функция tapply () используется для применения здесь функции mean () к каждой группе компонентов первого параметра, здесь доходов, определенные уровнями второго компонента,