1.10. Выполнение команд из файла или перенаправление вывода в файл
Если команды были сохранены во внешнем файле, скажем «command. R ’ в рабочем каталоге ’work’, то они могут быть выполнены в любое время в сеансе R командой:
> source («commands. r»)
Для Windows Source также доступен в меню File. Функция sink:
> sink("record.lis»)
отклонит весь последующий вывод консоли во внешний файл ‘record.lis’. Команда
> sink ()
восстановит вывод в консоли еще раз.
1.11. Сохранение данных и удаление объектов
Сущности, которые R создает и манипулирует, известны как объекты (object). Они могут быть переменными, массивами чисел, символьными строками, функциями или более общими структурами, построенных из таких компонентов.
Во время сеанса R объекты создаются и хранятся по имени (обсуждается в следующей секции). Команда R:
> objects ()
(также как ls ()) может использоваться для вывода на экран имен (в основном) объектов, которые в настоящий момент хранятся в пределах R. Набор объектов, сохраненных в настоящий момент, называют рабочей областью (workspace).
Для удаления объектов доступна команда rm:
> rm (x, y, z, ink, junk, temp, foo, bar)
Все объекты, создаваемые во время сеанса R, могут храниться постоянно в файле для использования в будущем сеансе R. В конце каждого сеанса R предоставляется возможность сохранить все в имеющиеся в данный момент объекты. Если подтвердить необходимость этого, то объекты записываются в файл, называемый». RData’ в текущем каталоге, а строки команд, использованных в сеансе, сохраняются в файл». Rhistory’.
При последующем запуске R рабочая область загружается из этого файла. Одновременно загружается присоединенная история команд.
Рекомендуется использовать отдельные рабочие каталоги для анализов, проводимых с R. Очень распространено использовать для анализа объекты с именами x и y. Подобные имена часто значимы в контексте отдельного анализа, но может быть довольно трудно решить то, чем они отличаются, если несколько анализов было выполнено в одном и том же каталоге.
2. Простые манипуляции; числа и векторы
2.1. Вектора и присваивания
R оперирует именованными структурами данных (data structures). Простейшая такая структура – это числовой вектор, который является отдельным объектом, состоящим из упорядоченного набора чисел. Чтобы создать вектор с именем x, скажем, состоящий из пяти чисел, а именно, 10.4, 5.6, 3.1, 6.4 и 21.7, используют команду R:
> x <– c (10.4, 5.6, 3.1, 6.4, 21.7)
Это – оператор присваивания, использующий функцию c (), которая в этом контексте может взять произвольное число аргументов вектора и значением которой является вектор, полученный путем объединения аргументов конец с концом.
С другими параметрами кроме типов векторов, таких как параметры режима списка, действие c () довольно отличается. Посмотрите Раздел 6.2.1 [Конкатенация списков].
Отдельное число, входящее в выражении, трактуется как вектор единичной длины.
Учтите, что оператор присваивания (» <-»), который состоит этих двух символов ‘ <’ («меньше чем») и ‘-’ («минус»), выполняется однонаправленно и «указывает» на объект, получающий значение выражения. В большинстве случаев можно использовать оператор ‘=’ в качестве альтернативы.
Также можно сделать присвоение, используя функцию assign (). Эквивалентный выше приведенному способ присвоения выглядит как:
> assign («x», c (10.4, 5.6, 3.1, 6.4, 21.7))
Обычный оператор <– может считаться синтаксическим сокращением для него.
Присвоения могут также быть сделаны в другом направлении, используя очевидное изменение в операторе присваивания. Таким образом, то же самое присвоение могло быть сделано, используя:
> c (10.4, 5.6, 3.1, 6.4, 21.7) -> x
Если выражение используется в качестве полной команды, значение печатается и теряется. Итак, если бы нам пришлось использовать команду:
> 1/x
то обратные величины пяти значений были бы напечатаны в терминале (а значение x, конечно, не изменилось).
В действительности все еще доступно .Last.value до выпполнения любого другого оператора.
Дальнейшее присваивание:
> y <-c (x, 0, x)
создаст вектор y с 11 элементами, состоящими из двух копий x и нулем между ними.
2.2. Векторная арифметика
Векторы могут использоваться в арифметических выражениях, и в этом случае операции выполняются поэлементно. Векторы, используемы в одном выражении, не обязательно должны иметь одинаковую длину. Если длины отличаются, то результат выражения – это вектор с длиной самого длинного вектора, который находится в выражении. Короткие векторы в выражении используются повторно столько раз, сколько это необходимо (возможно не целое число раз), до тех пор, пока они не совпадут с длиной самого длинного вектора. В частности константа просто повторяется. Так, учитывая предыдущие присваивания, команда:
> v <-2*x + y +1
создаст новый вектор v длины 11, составленный путем сложения элемент за элементом 2*x повторенного 2.2 раза, y повторяется только раз, и 1 повторяется 11 раз.
Элементарными арифметическими операторами являются +, -, *, / и ^ для возведения в степень. Дополнительно присутствуют все простые арифметические функции. log, exp, sin, cos, tan, sqrt и так далее, все они имеют свое обычное значение. max и min выбирают самые большие и наименьшие элементы вектора соответственно. range является функцией, значение которой – вектор длины два, а именно, c (min (x), max (x)).length (x) является числом элементов в x, sum (x) дает сумму всех элементов x, и prod (x) их произведение.
Двумя статистическими функциями являются mean (x), которая вычисляет среднее выборки, что соответствует sum (x) /length (x), и var (x), которая дает
sum ((x-mean (x)) ^2) / (length (x) -1)
или дисперсию выборки. Если параметром var () является n-на-p матрица, значение – матрица ковариации выборки p-на-p, полученная путем интерпретации строк как p независимых векторов-выборок.
sort (x) возвращает вектор того же размера как x с элементами, расположенными в возрастающем порядке; однако доступны и другие более гибкие средства сортировки (см. order (), или sort.list (), которые производят перестановку при сортировке).
Заметим, что max и min выбирают самое большое и наименьшее значение в их аргументах, даже если им дают несколько векторов. Параллельные функции максимума и минимума pmax и pmin возвращают вектор (длины, равной их самому длинному аргументу), который содержит в каждом своем элементе наибольшее (наименьшее) значение на этой позиции во всех входных векторах.
В большинстве случаев пользователю не важно, являются ли «числа» в числовых векторах целыми, реальными или даже комплексными. Внутренние расчеты осуществляются в реальных числах двойной точности, или комплексных числах двойной точности, если входные данные являются комплексными.
Для работы с комплексными числами надо явно предоставить мнимую часть. Таким образом: