В руководствах по классификации нередко можно встретить подобные команды:
myFormula <- Species ~ Sepal.Length + Sepal.Width + Petal.Length + Petal.Width
(пример взят из популярного набора данных iris
).
Что означает эта "тильда" и команда в целом?
Выражение в правой части от оператора присваивания -- это формула. Формулы нужны для описания статистических моделей. Справа от ~
в формуле располагаются независимые переменные (предикторы), слева -- зависимая величина (отклик). Таким образом, приведенная выше формула звучит по-русски примерно так: "Вид (Species) зависит от длины чашелистика (Sepal Length), ширины чашелистика (Sepal Width), длины лепестка (Petal Length) и ширины лепестка (Petal Width)".
Наконец, myFormula
-- это переменная, в которой сохраняется объект класса формула, так что его можно использовать далее в скрипте.
Тильда ~
представляет собой бинарный оператор, который также можно записать в виде функции двух переменных:
> `~`(lhs,rhs)
lhs ~ rhs
Это может оказаться полезным при использовании формул вместе с командами семейства apply
.
С формулой можно обращаться как с текстом:
# Получить компоненты формулы в текстовом виде
oldform <- as.character(myFormula)
# Создать из них новую формулу
myFormula <- as.formula( paste( oldform[2], "Sepal.Length", sep = "~" ) )
С формулой можно обращаться как со списком:
myFormula[[2]]
myFormula[[3]]
...
Формулы допускают сокращённую запись. Например, следующая формула
myFormula <- Species ~ .
обозначает в точности то же самое, что и самая первая из записанных здесь. Точка '.'
означает: "все переменные, которые ещё не использовались". В нашем случае это все колонки таблицы, кроме Species
.
Комментарии
comments powered by Disqus