R Language
Opérateurs arithmétiques
Recherche…
Remarques
Presque tous les opérateurs de R sont vraiment des fonctions. Par exemple, +
est une fonction définie comme function (e1, e2) .Primitive("+")
où e1 est le côté gauche de l'opérateur et e2 est le côté droit de l'opérateur. Cela signifie qu'il est possible d'accomplir des effets plutôt contre-intuitifs en masquant la base +
dans une fonction définie par l'utilisateur.
Par exemple:
`+` <- function(e1, e2) {e1-e2}
> 3+10
[1] -7
Portée et ajout
Prenons un exemple d'ajout d'une valeur à une plage (comme cela pourrait être fait dans une boucle par exemple):
3+1:5
Donne:
[1] 4 5 6 7 8
Cela est dû au fait que l'opérateur de la plage :
a une priorité plus élevée que l'opérateur d'addition +
.
Ce qui se passe pendant l'évaluation est la suivante:
-
3+1:5
-
3+c(1, 2, 3, 4, 5)
expansion de l'opérateur de distance pour créer un vecteur d'entiers. -
c(4, 5, 6, 7, 8)
Ajout de 3 à chaque membre du vecteur.
Pour éviter ce comportement, vous devez indiquer à l’interprète R comment vous souhaitez qu’il ordonne les opérations avec ( )
comme ceci:
(3+1):5
Maintenant, R va calculer ce qui est entre les parenthèses avant d’étendre la plage et donne:
[1] 4 5
Addition et soustraction
Les opérations mathématiques de base sont effectuées principalement sur des nombres ou sur des vecteurs (listes de nombres).
1. Utiliser des numéros uniques
Nous pouvons simplement entrer les nombres concaténés avec +
pour ajouter et -
pour soustraire :
> 3 + 4.5
# [1] 7.5
> 3 + 4.5 + 2
# [1] 9.5
> 3 + 4.5 + 2 - 3.8
# [1] 5.7
> 3 + NA
#[1] NA
> NA + NA
#[1] NA
> NA - NA
#[1] NA
> NaN - NA
#[1] NaN
> NaN + NA
#[1] NaN
On peut assigner les nombres aux variables (constantes dans ce cas) et faire les mêmes opérations:
> a <- 3; B <- 4.5; cc <- 2; Dd <- 3.8 ;na<-NA;nan<-NaN
> a + B
# [1] 7.5
> a + B + cc
# [1] 9.5
> a + B + cc - Dd
# [1] 5.7
> B-nan
#[1] NaN
> a+na-na
#[1] NA
> a + na
#[1] NA
> B-nan
#[1] NaN
> a+na-na
#[1] NA
2. Utilisation de vecteurs
Dans ce cas, nous créons des vecteurs de nombres et effectuons les opérations en utilisant ces vecteurs, ou des combinaisons avec des nombres uniques. Dans ce cas, l’opération est effectuée en considérant chaque élément du vecteur:
> A <- c(3, 4.5, 2, -3.8);
> A
# [1] 3.0 4.5 2.0 -3.8
> A + 2 # Adding a number
# [1] 5.0 6.5 4.0 -1.8
> 8 - A # number less vector
# [1] 5.0 3.5 6.0 11.8
> n <- length(A) #number of elements of vector A
> n
# [1] 4
> A[-n] + A[n] # Add the last element to the same vector without the last element
# [1] -0.8 0.7 -1.8
> A[1:2] + 3 # vector with the first two elements plus a number
# [1] 6.0 7.5
> A[1:2] - A[3:4] # vector with the first two elements less the vector with elements 3 and 4
# [1] 1.0 8.3
Nous pouvons également utiliser la fonction sum
pour ajouter tous les éléments d’un vecteur:
> sum(A)
# [1] 5.7
> sum(-A)
# [1] -5.7
> sum(A[-n]) + A[n]
# [1] 5.7
Nous devons faire attention au recyclage , qui est l'une des caractéristiques de R
, comportement qui se produit lors d'opérations mathématiques lorsque la longueur des vecteurs est différente. Les vecteurs plus courts dans l'expression sont recyclés aussi souvent que nécessaire (peut-être fractionnellement) jusqu'à ce qu'ils correspondent à la longueur du vecteur le plus long. En particulier, une constante est simplement répétée . Dans ce cas, un avertissement est affiché.
> B <- c(3, 5, -3, 2.7, 1.8)
> B
# [1] 3.0 5.0 -3.0 2.7 1.8
> A
# [1] 3.0 4.5 2.0 -3.8
> A + B # the first element of A is repeated
# [1] 6.0 9.5 -1.0 -1.1 4.8
Warning message:
In A + B : longer object length is not a multiple of shorter object length
> B - A # the first element of A is repeated
# [1] 0.0 0.5 -5.0 6.5 -1.2
Warning message:
In B - A : longer object length is not a multiple of shorter object length
Dans ce cas, la procédure correcte sera de ne considérer que les éléments du vecteur plus court:
> B[1:n] + A
# [1] 6.0 9.5 -1.0 -1.1
> B[1:n] - A
# [1] 0.0 0.5 -5.0 6.5
Lors de l'utilisation de la fonction sum
, tous les éléments de la fonction sont à nouveau ajoutés.
> sum(A, B)
# [1] 15.2
> sum(A, -B)
# [1] -3.8
> sum(A)+sum(B)
# [1] 15.2
> sum(A)-sum(B)
# [1] -3.8