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

1.10 Настройка окружения

Пользователи могут настроить свое окружение несколькими различными способами. существует системный файл, и у каждого каталога может быть свой собственный специальный файл инициализации. Наконец, можно использовать специальные функции .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().Определение в последующих файлах замаскирует определения в более ранних файлах.

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.11 Классы, универсальные функции и объектно-ориентированное программирование

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

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

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

Присутствие 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» для более полного обсуждения этого механизма.

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