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

运算基础R

Strumenti online

Introduzione ai calcoli semplici del linguaggio R.

Assegnazione = Il simbolo di assegnazione di un linguaggio generale è

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

Risultato dell'esecuzione del codice sopra:

[1] 579

Questo simbolo di assegnazione è un vantaggio formale e un difetto operativo del linguaggio R: formalmente più adatto ai matematici, poiché non tutti i matematici sono abituati a usare = Simbolo di assegnazione.

In termini di operazione, i simboli < e - non sono molto facili da digitare, il che può disorientare molti programmatori. Pertanto, le versioni più recenti del linguaggio R supportano = come simbolo di assegnazione:

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

这也是合法的 R 程序。

注意:很难考证从 R 的哪个版本开始支持了 = 赋值,但是本教程习用的 R 版本是 4.0.0。

数学运算符

下表列出了主要的数学运算符以及他们的运算顺序:

优先级符号Significato
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
[1] 0.5
> 8 / 3 %% 2
[1] 8
> 8 / 4 %% 2
[1] Inf
> 3 %% 2^2
[1] 3
> 10 / 3 %% 2
[1] 10

关系运算符

下表列出了 R 语言支持的关系运算符,关系运算符比较两个向量,将第一向量与第二向量的每个元素进行比较,结果返回一个布尔值。

OperatoreDescrizione
>判断第一个向量的每个元素是否大于第二个向量的相对应元素。
<判断第一个向量的每个元素是否小于第二个向量的相对应元素。
==判断第一个向量的每个元素是否等于第二个向量的相对应元素。
!=判断第一个向量的每个元素是否不等于第二个向量的相对应元素。
>=判断第一个向量的每个元素是否大于等于第二个向量的相对应元素。
<=判断第一个向量的每个元素是否小于等于第二个向量的相对应元素。
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)

L'output dell'esecuzione del codice sopra è:

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

Operatori logici

La tabella seguente elenca gli operatori logici supportati da R, che possono essere utilizzati con vettori di numeri, logici e complessi.

Tutti i numeri maggiori di 1 sono TRUE.

Gli operatori logici confrontano due vettori, confrontando ciascun elemento del primo vettore con l'elemento corrispondente del secondo vettore, e restituiscono un valore booleano.

OperatoreDescrizione
&L'operatore logico e elementare combina ciascun elemento del primo vettore con l'elemento corrispondente del secondo vettore. Se entrambi gli elementi sono TRUE, il risultato è TRUE, altrimenti è FALSE.
L'operatore logico o elementare combina ciascun elemento del primo vettore con l'elemento corrispondente del secondo vettore. Se almeno uno degli elementi è TRUE, il risultato è TRUE, altrimenti è FALSE.
!L'operatore logico non, restituisce il valore logico opposto di ciascun elemento del vettore. Se l'elemento è TRUE, restituisce FALSE, e viceversa.
&&L'operatore logico e, confronta solo il primo elemento di due vettori. Se entrambi gli elementi sono TRUE, il risultato è TRUE, altrimenti è FALSE.
||L'operatore logico o, confronta solo il primo elemento di due vettori. Se almeno uno degli elementi è TRUE, il risultato è TRUE, altrimenti è FALSE.
v <- c(3,1,TRUE,2+3i)
t <- c(4,1,FALSE,2+3i)
print(v&t)
print(v|t)
print(!v)
# &&, || confrontano solo il primo elemento
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)

L'output dell'esecuzione del codice sopra è:

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

Operatori di assegnazione

Le variabili di R possono utilizzare operatori a destra, a sinistra o uguale per assegnare valori.

La tabella seguente elenca gli operatori di assegnazione supportati da R.

OperatoreDescrizione

<−

=

<<−

Assegnazione a sinistra。

−>

−>>

Assegnazione a destra。
# Assegnazione a sinistra
v1 <- c(3,1,TRUE,"w3codebox")
v2 <<- c(3,1,TRUE,"w3codebox")
v3 = c(3,1,TRUE,"w3codebox")
print(v1)
print(v2)
print(v3)
# Assegnazione a destra
c(3,1,TRUE,"w3codebox") -> v1
c(3,1,TRUE,"w3codebox") ->> v2 
print(v1)
print(v2)

L'output dell'esecuzione del codice sopra è:

[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"

Altri operatori

R Language contiene anche alcuni operatori speciali.

OperatoreDescrizione
:Operatore colona, usato per creare una serie di numeri vettore.
%in%Usato per determinare se un elemento è nel vettore, restituisce TRUE se è presente, FALSE altrimenti.
%*%Usato per moltiplicare la matrice con la sua matrice trasposta.
# Vettore da 1 a 10
v <- 1:10
print(v) 
# Giudicare se il numero è nel vettore v
v1 <- 3
v2 <- 15
print(v1 %in% v) 
print(v2 %in% v) 
# Matrice e matrice trasposta
M = matrix(c(2,6,5,1,10,4), nrow = 2, ncol = 3, byrow = TRUE)
t = M %*% t(M)
print(t)

L'output dell'esecuzione del codice sopra è:

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

Funzione matematica

Le funzioni comuni per alcune funzioni matematiche sono:

FunzioneSpiegazione
sqrt(n)La radice quadrata di n
exp(n)Il numero e n-esimo potenza della costante naturale e
log(m,n)La funzione di logaritmo di m, restituisce n^x uguale a m
log10(m)Uguale a log(m,10)

Esempio seguente dimostra l'applicazione delle funzioni matematiche:

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

Funzione di arrotondamento:

NomeModello dei parametriSignificato
round(n)Arrotondamento per n
 (n, m)Arrotondamento a m cifre decimali per n
ceiling(n)Arrotondamento al di sopra per n
floor(n)Arrotondamento al di sotto per n

Esempio seguente dimostra l'applicazione della funzione di arrotondamento:

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

注意:R中的round函数有些情况下可能会"舍掉五"。

当取整位是偶数时,五也会被舍去,这一点与C语言不同。

函数三角R是弧度制:

> sin(pi/6)
[1] 0.5
> 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

若学习过概率论和统计学,应比较了解以下概率分布函数,因为R语言为数学工作者设计,所以经常使用:

> 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 - 函数随机数(常用于概率仿真)

:本教程非数学专业理论阐述教程,故概率分布数学理论不详细解释。R语言除含正态分布函数外,还有泊松分布(pois, Poisson)等常见分布函数,欲详细了解可学习"概率论与数理统计"。