В этом небольшом примере y – символ и его значение 4. Символ также является объектом R, но редко возникает необходимость иметь дело с символами непосредственно, кроме случаев «Программирование на языке» (Глава 6 [Вычисления на языке], страница 32).
3.1.3. Вызов функции
Большинство вычислений, выполненных в R, включает оценку функций, называемых как вызов функции. Функции вызываются по имени со списком аргументов, разделенных запятыми.
В этом примере функция mean (средняя) была вызвана с одним аргументом, вектором целых чисел от 1 до 10.
R содержит огромное число функций с различными результатами. Большинство используется для получения результата, который является объектом R, но некоторые используются для вспомогательных целей, например, функции печати и рисования.
Вызовы функции могут тегировать (или называть) аргументы, как в plot (x, y, pch = 3), аргументы без тегов известны как позиционные, так как функция должна отличить их значение от их последовательных позиций среди аргументов вызова, например, что x обозначает переменную абсциссы, а y ординату. Использование тегов/имен – очевидное удобство для функций с большим количеством дополнительных аргументов.
Специальный тип вызовов функции может появиться на левой стороне оператора присваивания как в:
В действительности вызывается функция class <– с исходным объектом и правой стороной. Функция выполняет модификацию объекта и возвращает результат, который затем сохраняется обратно в исходной переменной. По крайней мере, концептуально так должно быть. Прилагаются дополнительные усилия для исключения ненужного дублирования данных.
3.1.4. Операторы
R позволяет использование арифметических выражений с помощью операторов, подобных таковым из языка программирования C, например:
Используя круглые скобки, выражения можно сгруппировать с включением вызовов функций, и прямым присвоением переменным:
R содержит много операторов. Они перечислены в таблице ниже.
Минус, может быть унарным или бинарным
Плюс, может быть унарным или бинарным
Унарное нет
Тильда, используемая для формул модели, может быть или унарным или бинарным
Справка
Последовательность, двоичная (в формулах модели: взаимодействие)
Умножение бинарное
Деление бинарное
Возведение в степень бинарное
Специальные бинарные операторы, x могут быть заменены любым допустимым именем
Модуль бинарный
Целочисленное деление, бинарное
Матричное произведение, бинарное
Внешнее произведение, бинарное
Кронекерово умножение, бинарное
Соответствие оператора, бинарного (в формулах модели: гнездованое)
Меньше чем, бинарный
Больше чем, бинарный
Равно, бинарное
Больше чем или равно, бинарное
Меньше чем или равно, бинарное
И бинарное, векторизовано
И бинарное, не векторизовано
Или бинарное, векторизовано
Или бинарное, не векторизовано
Левое присвоение, бинарное
Правое присвоение, бинарное
Подмножество списка, бинарное
За исключением синтаксиса, нет никакой разницы между применением оператора и вызовом функции. Фактически, x + y может эквивалентно быть записано ‘+‘ (x, y). Заметим, что так как ‘+’ не является именем стандартной функции, то он должен быть заключен в кавычки.
R имеет дело со всем вектором данных за один раз, и большинство элементарных операторов и основных математических функций, например, log являются векторизованными (как обозначено в таблице выше). Например, добавление двух векторов одинаковой длины создаст вектор, содержащий поэлементные суммы, неявно индексируя циклическое выполнение по вектору. Также применяют как к другим операторам, таким ка – *, и / так и к структурам более высокой размерности. Заметим в особенности, что умножение двух матриц не производит обычное матричное произведение (оператор