- •1.Написание собственных функций 3
- •2.Статистические модели в r 18
- •3.Список використаної літератури 30
- •Написание собственных функций
- •Простые примеры
- •Определение новых бинарных операторов
- •Именованные параметры и умолчания
- •Параметр ‘...’
- •Присвоения в пределах функций
- •Более сложные примеры
- •Фактор эффективности при проектировании блоков
- •Отбрасывание всех имен при печатании массива
- •Рекурсивное числовое интегрирование
- •Область действия
- •Настройка окружения
- •Классы, универсальные функции и объектно-ориентированное программирование
- •Статистические модели в r
- •Определение статистических моделей; формулы
- •Примеры
- •Противопоставления
- •Линейные модели
- •Универсальные функции для извлечения информации о модели
- •Vcov(object)
- •Дисперсионный анализ и сравнение модели
- •Таблицы anova
- •Обновление подогнанных моделей
- •Список використаної літератури
Настройка окружения
Пользователи могут настроить свое окружение несколькими различными способами. существует системный файл, и у каждого каталога может быть свой собственный специальный файл инициализации. Наконец, можно использовать специальные функции .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")) # Время обеда?
}
Классы, универсальные функции и объектно-ориентированное программирование
Класс объекта определяет, как он будет обработан универсальными функциями. Наоборот, универсальная функция выполняет действия и обработку своих аргументов в зависимости от конкретного класса самого аргумента. Если у аргумента отсутствует атрибут класса, или он имеет класс, не удовлетворяющий формату общей функции, всегда предусмотрено действие по умолчанию.
Поясним это примером. Механизм класса предлагает пользователю средство по проектированию и написанию универсальных функций для определенных целей. Среди ряда универсальных функций имеется 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» для более полного обсуждения этого механизма.