Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
RCoreTeam2014.docx
Скачиваний:
46
Добавлен:
08.10.2015
Размер:
539.13 Кб
Скачать
  1. Списки и фреймы данных

    1. Списки

Список (list) – это объект R,состоящий из упорядоченного набора объектов, известных как его компоненты.

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

> Lst <- list(name="Fred", wife="Mary", no.children=3, child.ages=c(4,7,9)) Компоненты всегда нумеруются и могут всегда упоминаться как таковые. Таким образом, еслиLstимя списка с четырьмя компонентами, они могут индивидуально упоминаться какLst[[1]], Lst [[2]], Lst [[3]]иLst [[4]].Если, далее,Lst [[4]]преобразованный в нижний индекс массив вектора тогдаLst [[4]] [1]его первая запись. ЕслиLst список, то функцияlength(Lst)дает число (верхнего уровня) компоненты, которые он имеет. Компоненты списков можно также назвать, и в этом случае на компоненту можно сослаться или, давая имя компоненты как символьной строки вместо числа в двойных квадратных скобках, или, более удобно, давая выражение вида:

> name$component_name для той же самой вещи.

Это - очень полезное соглашение, поскольку оно облегчает получать правильную компоненту, если забыли число.

Так в простом примере, данном выше:

Lst$name -то же самое какLst [[1]]и является строкой "Фред",

Lst$wife- то же самое какLst [[2]] и является строкой "Мэри",

Lst$child.ages [1]является тем же самым какLst [[4]] [1]и является числом 4.

Дополнительно, можно также использовать имена компонентов списка в двойных квадратных скобках, то есть, Lst[["имя"]]то же самое какLst$name. Это особенно полезно, когда имя извлекаемой компоненты сохраняется в другой переменной как в:

> x <- "name"; Lst[[x]]

Очень важно различить Lst[[1]] от Lst[1].‘ [[...]]’ является оператором, используемым для выбора отдельного элемента, тогда как‘[...]’общий оператор преобразования в нижний индекс. Таким образом, прежний -первый объект в спискеLst, и если это именованный список, то имя не включено. Последний являетсяподсписком списка Lst,состоящим только из первой записи. Если это - именованный список, имена переданы подсписку.

Имена компонентов могут быть сокращены урезанием до минимального числа букв, необходимых для их идентификации единственным образом. Таким образом, Lst$coefficientsможет минимально специфицироваться какLst$coeиLst$covarianceкакLst$cov.

Вектор имен - фактически просто атрибут списка как любой другой и может быть обработан как таковой. Другим структурам помимо списков можно, конечно, так же дать атрибут имен.

    1. Построение и изменение списков

Новые списки могут быть сформированы из существующих объектов функцией list(). Присвоение вида:

> Lst <- list(name_1=object_1, ..., name_m=object_m) устанавливает списокLstизmкомпонентов, используяobject 1, . . . , object m для компонентов и дает им имена как указано именами параметра (которые можно свободно выбрать). Если эти имена опущены, то компоненты только нумеруются. Используемые при формировании компоненты копируются, и новый список не влияет на оригиналы.

Списки, как любой преобразованный в нижний индекс объект, могут быть расширены указанием дополнительных компонент. Например:

> Lst[5] <- list(matrix=Mat)

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]