В этом небольшом примере y – символ и его значение 4. Символ также является объектом R, но редко возникает необходимость иметь дело с символами непосредственно, кроме случаев «Программирование на языке» (Глава 6 [Вычисления на языке], страница 32).

> y <– 4
> y
[1] 4

3.1.3. Вызов функции

Большинство вычислений, выполненных в R, включает оценку функций, называемых как вызов функции. Функции вызываются по имени со списком аргументов, разделенных запятыми.

> mean (1:10)
[1] 5.5

В этом примере функция mean (средняя) была вызвана с одним аргументом, вектором целых чисел от 1 до 10.

R содержит огромное число функций с различными результатами. Большинство используется для получения результата, который является объектом R, но некоторые используются для вспомогательных целей, например, функции печати и рисования.

Вызовы функции могут тегировать (или называть) аргументы, как в plot (x, y, pch = 3), аргументы без тегов известны как позиционные, так как функция должна отличить их значение от их последовательных позиций среди аргументов вызова, например, что x обозначает переменную абсциссы, а y ординату. Использование тегов/имен – очевидное удобство для функций с большим количеством дополнительных аргументов.

Специальный тип вызовов функции может появиться на левой стороне оператора присваивания как в:

> class (x) <– «foo»

В действительности вызывается функция class <– с исходным объектом и правой стороной. Функция выполняет модификацию объекта и возвращает результат, который затем сохраняется обратно в исходной переменной. По крайней мере, концептуально так должно быть. Прилагаются дополнительные усилия для исключения ненужного дублирования данных.

3.1.4. Операторы

R позволяет использование арифметических выражений с помощью операторов, подобных таковым из языка программирования C, например:

> 1 +2
[1] 3

Используя круглые скобки, выражения можно сгруппировать с включением вызовов функций, и прямым присвоением переменным:

> y <– 2 * (a + log (x))

R содержит много операторов. Они перечислены в таблице ниже.

– 

Минус, может быть унарным или бинарным

+

Плюс, может быть унарным или бинарным

!

Унарное нет

~

Тильда, используемая для формул модели, может быть или унарным или бинарным

?

Справка

:

Последовательность, двоичная (в формулах модели: взаимодействие)

*

Умножение бинарное

/

Деление бинарное

^

Возведение в степень бинарное

%x%

Специальные бинарные операторы, x могут быть заменены любым допустимым именем

%%

Модуль бинарный

% / %

Целочисленное деление, бинарное

% * %

Матричное произведение, бинарное

%o%

Внешнее произведение, бинарное

%x%

Кронекерово умножение, бинарное

%in%

Соответствие оператора, бинарного (в формулах модели: гнездованое)

<

Меньше чем, бинарный

>

Больше чем, бинарный

==

Равно, бинарное

> =

Больше чем или равно, бинарное

<=

Меньше чем или равно, бинарное

& And,

И бинарное, векторизовано

&&

И бинарное, не векторизовано

|

Или бинарное, векторизовано

||

Или бинарное, не векторизовано

<-

Левое присвоение, бинарное

– >

Правое присвоение, бинарное

$

Подмножество списка, бинарное

За исключением синтаксиса, нет никакой разницы между применением оператора и вызовом функции. Фактически, x + y может эквивалентно быть записано ‘+‘ (x, y). Заметим, что так как ‘+’ не является именем стандартной функции, то он должен быть заключен в кавычки.

R имеет дело со всем вектором данных за один раз, и большинство элементарных операторов и основных математических функций, например, log являются векторизованными (как обозначено в таблице выше). Например, добавление двух векторов одинаковой длины создаст вектор, содержащий поэлементные суммы, неявно индексируя циклическое выполнение по вектору. Также применяют как к другим операторам, таким ка – *, и / так и к структурам более высокой размерности. Заметим в особенности, что умножение двух матриц не производит обычное матричное произведение (оператор