Определение языка R. Версия 3.5.2 (2018-12-20) DRAFT - страница 7



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 являются векторизованными (как обозначено в таблице выше). Например, добавление двух векторов одинаковой длины создаст вектор, содержащий поэлементные суммы, неявно индексируя циклическое выполнение по вектору. Также применяют как к другим операторам, таким ка – *, и / так и к структурам более высокой размерности. Заметим в особенности, что умножение двух матриц не производит обычное матричное произведение (оператор %*% существует с этой целью). Некоторые тонкости, касающиеся векторизованных операций, будут обсуждены в разделе 3.3 [Элементарные арифметические операции].

Для получения доступа к отдельным атомарным элементам вектора используется конструкция x [i]:

> x <– rnorm (5)
> x
[1]

– 0.12526937 -0.27961154 -1.03718717 -0.08156527 1.37167090

> x [2]
[1] -0.2796115

Для доступа к компоненте списка обычно используется x$a или x [[i]].

> x <– options ()
> x$prompt
[1] ">»

Также можно использовать индексацию конструкций на правой стороне присвоения.

Подобно другим операторам, индексация, в действительности, выполняется функциями, и можно использовать « [» (x, 2) вместо x [2].

Операции индексации R содержат много расширенных функций, которые описаны далее в разделе 3.4 (Индексирование).

3.2. Управляющие структуры

Вычисление в R состоит в последовательной оценке операторов. Операторы, такие как x <-1:10 или mean (y), могут быть разделены или точкой с запятой или новой строкой. Всякий раз, когда средству анализа предоставляют синтаксически полный оператор, этот оператор оценивается и возвращается значение. Результат оценки оператора может упоминаться как значение оператора. Значение всегда присваиваться символу.