English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Основные арифметические операции в языке R

Онлайн-инструменты

Эта глава знакомит с простыми вычислениями языка R.

Присваивание = Символ присваивания в других языках обычно:

a <- 123
b <- 456
print(a + b)

Результат выполнения кода выше:

[1] 579

Этот символ присваивания является формальным преимуществом и недостатком операционного языка R: формально он更适合 математикам, так как не все математики привыкли использовать = Как символ присваивания.

С точки зрения использования, символы < и - не очень хорошо вводятся, что может не подходить многим программистам. Поэтому, в более новых версиях языка R поддерживается символ = в качестве знака присваивания:

a = 123
b = 456
print(a + b)

Это также является законным R-программой.

Внимание:Трудно определить, с какой версии R поддержка началась = Ассигнование, но в данном руководстве используется версия R 4.0.0.

Математические операторы

В таблице ниже перечислены основные математические операторы и их порядок выполнения:

ПриоритетЗнакиЗначение
1()Скобки
2^Операция возведения в степень
3%%Целочисленное деление с остатком
 %/%Целочисленное деление
4*Умножение
 /Деление
5+Сложение
 -Вычитание

Ниже приведены примеры простых математических операций:

> 1 + 2 * 3
[1] 7
> (1 + 2) * 3
[1] 9
> 3 / 4
[1] 0.75
> 3.4 - 1.2
[1] 2.2
> 1 - 4 * 0.5^3
> pnorm(0)
> 8 / 3 %% 2
[1] 8
> 8 / 4 %% 2
[1] Inf
> 3 %% 2^2
[1] 3
> 10 / 3 %% 2
[1] 10

Операторы отношений

В таблице ниже перечислены операторы отношений, поддерживаемые языком R. Операторы отношений сравнивают два вектора, сравнивают каждый элемент первого вектора с соответствующим элементом второго вектора, и результатом является булево значение.

ОператорОписание
>Проверка каждого элемента первого вектора на то, является ли он больше соответствующего элементу второго вектора.
<Проверка каждого элемента первого вектора на то, является ли он меньше соответствующего элементу второго вектора.
==Проверка каждого элемента первого вектора на то, является ли он равен соответствующему элементу второго вектора.
!=Проверка каждого элемента первого вектора на то, является ли он не равен соответствующему элементу второго вектора.
>=Проверка каждого элемента первого вектора на то, является ли он больше или равен соответствующему элементу второго вектора.
<=Проверка каждого элемента первого вектора на то, является ли он меньше или равен соответствующему элементу второго вектора.
v <- c(2,4,6,9)
t <- c(1,4,7,9)
print(v>t)
print(v<t)
print(v==t)
print(v!=t)
print(v>=t)
print(v<=t)

Результат выполнения кода приведен ниже:

[1] TRUE ЛОЖЬ ЛОЖЬ ЛОЖЬ
[1] ЛОЖЬ ЛОЖЬ TRUE ЛОЖЬ
[1] ЛОЖЬ TRUE ЛОЖЬ TRUE
[1] TRUE ЛОЖЬ TRUE ЛОЖЬ
[1] TRUE TRUE FALSE TRUE
[1] ЛОЖЬ TRUE TRUE TRUE

Логические операторы

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

Все числа больше 1 TRUE.

Логические операторы сравнивают два вектора, сравнивают каждый элемент первого вектора с соответствующим элементом второго вектора, результат возвращает булево значение.

ОператорОписание
&Элемент логический и оператор комбинирует каждый элемент первого вектора с соответствующим элементом второго вектора, если оба TRUE, то результат TRUE,否则 FALSE.
Элемент логический или оператор комбинирует каждый элемент первого вектора с соответствующим элементом второго вектора, если один из элементов TRUE, то результат TRUE, если оба FALSE, то FALSE.
!Логический не оператор, возвращает логическое значение каждого элемента вектора, если элемент TRUE, то FALSE, если FALSE, то TRUE.
&&Логический и оператор, сравнивает только первый элемент двух векторов, если оба TRUE, то результат TRUE,否则 FALSE.
||Логический или оператор, сравнивает только первый элемент двух векторов, если один из элементов TRUE, то результат TRUE, если оба FALSE, то FALSE.
v <- c(3,1,TRUE,2+3i)
t <- c(4,1,FALSE,2+3i)
print(v&t)
print(v|t)
print(!v)
# &&, || сравнивают только первый элемент
v <- c(3,0,TRUE,2+2i)
t <- c(1,3,TRUE,2+3i)
print(v&&t)
v <- c(0,0,TRUE,2+2i)
t <- c(0,3,TRUE,2+3i)
print(v||t)

Результат выполнения кода приведен ниже:

[1] TRUE TRUE FALSE TRUE
[1] TRUE TRUE TRUE TRUE
[1] FALSE FALSE FALSE FALSE
[1] TRUE
[1] FALSE

Операторы присваивания

Переменные языка R могут присваиваться с использованием операторов влево, вправо или равно.

В таблице перечислены операторы присваивания, поддерживаемые языком R.

ОператорОписание

<−

=

<<−

Влево присваивание。

−>

−>>

Вправо присваивание。
# Влево присваивание
v1 <- c(3,1,TRUE,"w3codebox")
v2 <<- c(3,1,TRUE,"w3codebox")
v3 = c(3,1,TRUE,"w3codebox")
print(v1)
print(v2)
print(v3)
# Вправо присваивание
c(3,1,TRUE,"w3codebox") -> v1
c(3,1,TRUE,"w3codebox") ->> v2 
print(v1)
print(v2)

Результат выполнения кода приведен ниже:

[1] "3"      "1"      "TRUE"   "w3codebox"
[1] "3"      "1"      "TRUE"   "w3codebox"
[1] "3"      "1"      "TRUE"   "w3codebox"
[1] "3"      "1"      "TRUE"   "w3codebox"
[1] "3"      "1"      "TRUE"   "w3codebox"

Другие операторы

Язык R также содержит некоторые особые операторы.

ОператорОписание
:Оператор ':' используется для создания вектора из ряда чисел.
%in%Используется для проверки, находится ли элемент в векторе, возвращает логическое значение TRUE, если есть, FALSE, если нет.
%*%Используется для умножения матрицы на её транспонированную матрицу.
# Вектор от 1 до 10
v <- 1:10
print(v) 
# Проверка того, находится ли число в векторе v
v1 <- 3
v2 <- 15
print(v1 %in% v) 
print(v2 %in% v) 
# Умножение матрицы на её транспонированную матрицу
M = matrix( c(2,6,5,1,10,4), nrow = 2,ncol = 3,byrow = TRUE)
t = M %*% t(M)
print(t)

Результат выполнения кода приведен ниже:

[1]  1  2  3  4  5  6  7  8  9 10
[1] TRUE
[1] FALSE
     [,1] [,2]
[1,]   65   82
[2,]   82  117

Математические функции

Часто используются некоторые математические функции:

ФункцияОписание
sqrt(n)Корень из n
exp(n)e в степени n,
log(m,n)Функция логарифма m, возвращающая степень n, равную m
log10(m)Эквивалент log(m,10)

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

> sqrt(4)
[1] 2
> exp(1)
[1] 2.718282
> exp(2)
[1] 7.389056
> log(2,4)
> pnorm(0)
> log10(10000)
[1] 4

Функция округления:

НазваниеМодель параметраЗначение
round(n)Округление n до целого числа
 (n, m)Округление n до m десятичных знаков
ceiling(n)Натуральное число n, умноженное на 10
floor(n)Натуральное число n, деленное на 10

Примеры использования функции округления приведены ниже:

> round(1.5)
[1] 2
> round(2.5)
[1] 2
> round(3.5)
[1] 4
> round(4.5)
[1] 4

注意Внимание

Пункт: функция round в R может "отбрасывать пять" в некоторых случаях.

Когда целое значение является четным, пять также отбрасывается, что differs от языка C.

Тригонометрические функции в R измеряются в градусах:
> pnorm(0)
> sin(pi/6)
> cos(pi/4)
[1] 0.7071068
> tan(pi/3)

[1] 1.732051

Обратные тригонометрические функции:
> asin(0.5)
[1] 0.5235988
> acos(0.7071068)
[1] 0.7853981
> atan(1.732051)

[1] 1.047198

Пример
> dnorm(0)
[1] 0.3989423
> pnorm(0)
[1] 0.5
> qnorm(0.95)
[1] 1.644854
> rnorm(3, 5, 2) # Генерирует 3 случайных числа с средним значением 5 и стандартным отклонением 2

[1] 4.177589 6.413927 4.206032

Эти четыре функции используются для расчета нормального распределения. Имена всех этих функций оканчиваются на norm, что означает "нормальное распределение".

  • Префиксы имен функций распределения есть四种: d

  • - Функция плотности вероятности p

  • - Функция интеграла плотности вероятности (интеграл от бесконечно малого до x) q

  • - Функция квантилей r

- Функция генерации случайных чисел (часто используется для имитации вероятностных仿真)Примечание