Сводка : pretty
возвращает несколько нечеткие результаты. Он следует определенным шаблонам, но его нельзя использовать для создания векторов в соответствии с точными спецификациями и (я считаю), что это не предназначено.
Подробности
Думаю, эти примеры не идеально, чтобы показать эффекты pretty()
. И то, как работает pretty
, нелегко предсказать. Я обычно напоминаю себе, что это было реализовано для создания разумных отметок на графиках. В диаграмме обычно требуется хорошее первое и последнее значение и равные промежутки между ними. Это имеет два последствия:
- На графике начальный тик должен быть меньше или равен моей
min(x)
точки данных, а последний тик должен быть больше, чем max(x)
. - Для графика требуется хотя бы одна отметка посередине (только начало и конец мне не кажутся разумными). Думаю, поэтому
n=2
не работает. На графике мне тоже обычно не нужны точные отметки. Идея pretty состоит в том, чтобы просто дать вам разумные отметки на основе любых данных. - Третий принцип, который может помочь понять
pretty
: функция игнорирует любые промежуточные шаги, которые вы вводите дюйм. Он извлекает минимальное и максимальное значение и продолжает работу оттуда. Это означает, что pretty(1:5)
или pretty(c(1, 5))
не должны иметь значения.
Давайте присмотримся. Это дает результат, который немного его объясняет:
pretty (c(105,543))
[1] 100 200 300 400 500 600
Итак, мы получаем «сбалансированный» вектор. Под сбалансированным я подразумеваю, что вы получаете равные шаги и круглые начальные и конечные точки. В нашем примере 105 округляется до 100 и 543 до 600. Поскольку конечные точки имеют основание 100, деления тоже имеют.
pretty (c(105,543), n=3)
[1] 0 200 400 600
Это не может дать нам 100 300 500
, потому что 500 < 543. Почему он не сохраняет n=3
, а дает нам 0 300 600
, я тоже не могу сказать. Но когда вы запрашиваете n=7
pretty, не может вернуть столько промежуточных шагов с шагом 100. pretty
пытается оставаться как можно ближе к min, max и n. Он переключается на размер шага 50.
pretty (c(105,543), n=7)
[1] 100 150 200 250 300 350 400 450 500 550