Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Звіт на практику_New1.docx
Скачиваний:
3
Добавлен:
08.10.2015
Размер:
65.1 Кб
Скачать
    1. Настройка окружения

Пользователи могут настроить свое окружение несколькими различными способами. существует системный файл, и у каждого каталога может быть свой собственный специальный файл инициализации. Наконец, можно использовать специальные функции .First и .Last.

Расположение системного файла инициализации берется из значения переменной окружения R_PROFILE. Если эта переменная сброшена, то используется файл ‘Rprofile.site’ в подкаталоге 'etc' домашней директории R. Этот файл должен содержать команды, которые необходимо выполнять каждый раз при запуске R в Вашей системе. Второй, персональный файл профиля с именем ‘.Rprofile, может быть помещен в любой каталог. Если R вызван в этом каталоге, то файл будет считан из него. Этот файл дает отдельный пользовательский контроль над рабочей областью и учитывает различные процедуры запуска в различных рабочих каталогах. Если файл ‘.Rprofile не найден в каталоге запуска, то R ищет файл ‘.Rprofile в корневом каталоге пользователя и использует его (если он существует). Если установлена переменная среды R_PROFILE_USER, то файл, на который она указывает, используется вместо файлов ‘.Rprofile.

У любой функции с именем .First() в любом из этих двух файлов профиля, либо в образе ‘.RData’ имеется особый статус. Она автоматически выполняется в начале сеанса R и может использоваться для инициализации среды. Например, определение в примере ниже изменяет приглашение системы на $ и устанавливает разные другие полезные вещи, которые затем могут считаться само собой разумеющимся в остальной части сеанса.

Таким образом, последовательность, в которой выполняются файлы, это Rprofile.site’, Rprofile, ‘.RData’, а затем .First(). Определение в последующих файлах замаскирует определения в более ранних файлах.

> .First <- function() { options(prompt="$ ", continue="+\t") # $ как приглашение

options(digits=5, length=999) # формат чисел и область печати

x11() # графический драйвер par(pch = "+") # plotting character source(file.path(Sys.getenv("HOME"), "R", "mystuff.R "))

# собственные функции

library(MASS) # присоединить пакет

}

Аналогично, если определена функция .Last(), то она (обычно) выполняется в самом конце сеанса. Пример дан ниже.

> .Last <- function() {

graphics.off() # небольшая мера безопасности.

cat(paste(date(),"\nAdios\n")) # Время обеда?

}

    1. Классы, универсальные функции и объектно-ориентированное программирование

Класс объекта определяет, как он будет обработан универсальными функциями. Наоборот, универсальная функция выполняет действия и обработку своих аргументов в зависимости от конкретного класса самого аргумента. Если у аргумента отсутствует атрибут класса, или он имеет класс, не удовлетворяющий формату общей функции, всегда предусмотрено действие по умолчанию.

Поясним это примером. Механизм класса предлагает пользователю средство по проектированию и написанию универсальных функций для определенных целей. Среди ряда универсальных функций имеется plot() для вывода на экран графических объектов, summary() для суммирования анализов различных типов, и anova() для сравнения статистических моделей.

Количество универсальных функций, которые могут обработать класс определенным образом, может быть довольно большим. Например, функции, которые могут быть применены к некоторым объектам класса "data.frame", включают:

[ [[<- any as.matrix

[<- mean plot summary

Текущий полный список может быть получен использованием функции methods():

> methods(class="data.frame")

Наоборот, число классов, обрабатываемых универсальной функцией, также может быть довольно большим. Например, у функции plot() есть метод по умолчанию и разновидности для объектов классов "data.frame", “density", "factor" и многое другое. Полный список может быть получен снова при использовании функции method(): > methods(plot)

Для многих универсальных функций тело функции довольно короткое, например:

> coef

function (object, ...) UseMethod("coef")

Присутствие UseMethod указывает, что это универсальная функция. Чтобы увидеть, какой метод доступен, следует использовать method():

> methods(coef)

[1] coef.aov* coef.Arima* coef.default* coef.listof*

[5] coef.nls* coef.summary.nls*

Non-visible functions are asterisked

В этом примере существует шесть методов, ни один из них нельзя увидеть, набрав его имя. Можно прочесть их, введя:

> getAnywhere("coef.aov")

A single object matching ’coef.aov’ was found

It was found in the following places registered S3 method for coef from namespace stats namespace:stats

with value

function (object, ...)

{ z <- object$coef z[!is.na(z)]

}

> getS3method("coef", "aov")

function (object, ...)

{ z <- object$coef z[!is.na(z)] }

Читатель отсылается к «Определению языка R» для более полного обсуждения этого механизма.

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