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


Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow