Types de données en R

Les types de données désignent un système étendu utilisé pour déclarer des variables ou des fonctions de types différents.

Le type d'une variable détermine l'espace qu'elle occupe en mémoire, et la façon dont le motif de bits stocké est interprété.

Il existe principalement trois types de données les plus élémentaires en langage R :

  • Numeric
  • Logique
  • Texte

Il existe principalement deux types de constantes numériques :

Type général123 -0.125
Notation scientifique1.23e2 -1.25E-1

Le type logique est souvent appelé booléen dans de nombreux autres langages de programmation, et ses valeurs constantes sont seulementTRUEetFALSE。

Remarque :Le langage R est sensible à la casse ; true ou True ne peuvent pas représenter TRUE.

Le type de données le plus intuitif est le type texte. Le texte est la chaîne de caractères (String) souvent rencontrée dans d'autres langages, et les constantes sont placées entre guillemets doubles. En R, les constantes textuelles peuvent être placées entre guillemets simples ou doubles, par exemple :

Exemple

> 'example' == "example"
[1] VRAI

En ce qui concerne la définition de variables en R, contrairement aux règles syntaxiques de certains langages fortement typés où vous devez spécifier explicitement un nom et un type de données pour une variable, chaque fois que vous utilisez un opérateur d'affectation en R, vous définissez en réalité une nouvelle variable :

Exemple

a = 1
b <- VRAI
b = "abc"

Selon le type d'objet, il existe les 6 types suivants (ils seront présentés en détail plus tard) :

Vecteur

Le vecteur est souvent fourni dans les bibliothèques standard de langages de programmation spécialisés tels que Java, Rust et C#, car le vecteur est un outil indispensable dans les opérations mathématiques — le vecteur le plus courant que nous rencontrons est le vecteur bidimensionnel, qui est nécessairement utilisé dans un système de coordonnées planes.

Du point de vue de la structure de données, un vecteur est une liste linéaire, qui peut être considérée comme un tableau.

En R, l'existence du vecteur en tant que type facilite les opérations vectorielles :

Exemple

> a = c(3, 4)
> b = c(5, 0)
> a + b
[1] 8 4
>

c()est une fonction qui crée des vecteurs.

Ici, deux vecteurs bidimensionnels sont additionnés pour obtenir un nouveau vecteur bidimensionnel (8, 4). Si vous effectuez une opération entre un vecteur bidimensionnel et un vecteur tridimensionnel, cela perdra sa signification mathématique ; bien que cela ne s'arrête pas, un avertissement sera émis.

Je suggère à chacun de prendre l'habitude d'empêcher cette situation de se produire.

Chaque élément d'un vecteur peut être extrait individuellement par index :

Exemple

> a = c(10, 20, 30, 40, 50)
> a[2]
[1] 20

Remarque :En R, l'« index » ne représente pas un décalage, mais représente la position ordinale, c'est-à-dire qu'il commence à 1 !

R peut également facilement extraire une partie d’un vecteur :

Exemple

> a[1:4] # Extraire les éléments 1 à 4, y compris les éléments 1 et 4
[1] 10 20 30 40
> a[c(1, 3, 5)] # Extraire les éléments 1, 3, 5
[1] 10 30 50
> a[c(-1, -5)] # Supprimer les éléments 1 et 5
[1] 20 30 40

Ces trois méthodes d’extraction partielle sont les plus couramment utilisées.

Les vecteurs prennent en charge les calculs scalaires :

Exemple

> c(1.1, 1.2, 1.3) - 0.5
[1] 0.6 0.7 0.8
> a = c(1,2)
> a ^ 2
[1] 1 4

Les fonctions mathématiques couramment utilisées décrites précédemment, telles que sqrt, exp, etc., peuvent également être utilisées pour des opérations scalaires sur des vecteurs.

En tant que structure de liste linéaire, « vector » doit disposer de certaines fonctions courantes de traitement des listes linéaires ; R possède effectivement ces fonctions :

Tri des vecteurs :

Exemple

> a = c(1, 3, 5, 2, 4, 6)
> trier(a)
[1] 1 2 3 4 5 6
> rev(a)
[1] 6 4 2 5 3 1
> order(a)
[1] 1 4 2 5 3 6
> a[order(a)]
[1] 1 2 3 4 5 6

La fonction order() renvoie un vecteur d’indices après le tri du vecteur.

Statistiques vectorielles

R dispose de fonctions statistiques très complètes :

Nom de la fonctionSignification
sumSum
meanMoyenne
varVariance
sdÉcart-type
minValeur minimale
maxValeur maximale
rangeÉtendue (valeurs maximale et minimale)

Exemple de statistiques vectorielles :

Exemple

> sum(1:5)
[1] 15
> sd(1:5)
[1] 1.581139
> range(1:5)
[1] 1 5

Génération de vecteurs

Les vecteurs peuvent être générés en utilisant la fonctionc(), ou utiliser l'opérateur min:max pour générer une séquence continue.

Si vous voulez générer une suite arithmétique avec des intervalles, vous pouvez utiliser la fonction seq :

> seq(1, 9, 2)
[1] 1 3 5 7 9

seq peut également générer une suite arithmétique de m à n, il suffit de spécifier m, n et la longueur de la suite :

> seq(0, 1, length.out=3)
[1] 0.0 0.5 1.0

rep signifie répéter, et peut être utilisé pour générer des séquences de nombres répétés :

> rep(0, 5)
[1] 0 0 0 0 0

NA et NULL sont souvent utilisés dans les vecteurs. Nous présentons ici ces deux termes et leurs différences :

  • NA représente « manquant », NULL représente « inexistant ».
  • NA manquant est comme un espace réservé, ce qui signifie qu'il n'y a pas de valeur ici, mais que la position existe.
  • NULL signifie que les données n'existent pas.

Explication de l'exemple :

Exemple

> length(c(NA, NA, NULL))
[1] 2
> c(NA, NA, NULL, NA)
[1] NA NA NA

De toute évidence, NULL n'a pas de sens dans un vecteur.


Logique

Les vecteurs logiques sont principalement utilisés pour des opérations logiques sur des vecteurs, par exemple :

Exemple

> c(11, 12, 13) > 12
[1] FALSE FALSE TRUE

La fonction which est une fonction de traitement de vecteurs logiques très courante, qui peut être utilisée pour filtrer les indices des données dont nous avons besoin :

Exemple

> a = c(11, 12, 13)
> b = a > 12
> print(b)
[1] FALSE FALSE TRUE
> which(b)
[1] 3

Par exemple, nous devons filtrer les données supérieures ou égales à 60 et inférieures à 70 d'une liste linéaire :

Exemple

> vector = c(10, 40, 78, 64, 53, 62, 69, 70)
> print(vector[which(vector >= 60 & vector < 70)])
[1] 64 62 69

Les fonctions similaires incluent all et any :

Exemple

> all(c(TRUE, TRUE, TRUE))
[1] VRAI
> all(c(TRUE, TRUE, FALSE))
[1] FALSE
> any(c(TRUE, FALSE, FALSE))
[1] VRAI
> any(c(FALSE, FALSE, FALSE))
[1] FALSE

all() est utilisé pour vérifier si un vecteur logique est entièrement TRUE, any() est utilisé pour vérifier si un vecteur logique contient TRUE.


String

Le type de données chaîne de caractères n'est pas compliqué en soi ; nous nous concentrons ici sur la présentation des fonctions de manipulation de chaînes :

Exemple

> toupper("Example") # Convertir en majuscules
[1] "EXAMPLE"
> tolower("Example") # Convertir en minuscules
[1] "example"
> nchar(Chinese, type="bytes") # Compter la longueur en octets
[1] 4
> nchar(Chinese, type="char") # Compter le nombre de caractères
[1] 2
> substr("123456789", 1, 5) # Extraire la sous-chaîne, de 1 à 5
[1] "12345"
> substring("1234567890", 5) # Extraire la sous-chaîne, de 5 à la fin
[1] "567890"
> as.numeric("12") # Convertir une chaîne en nombre
[1] 12
> as.character(12.34) # Convertir un nombre en chaîne
[1] "12.34"
> strsplit("2019;10;1", ";") # Diviser une chaîne par un délimiteur
[[1]]
[1] "2019" "10"   "1"
> gsub("/", "-", "2019/10/1") # Remplacer une chaîne
[1] "2019-10-1"

Sur les ordinateurs Windows, la norme d'encodage GBK est utilisée, donc un caractère chinois fait deux octets. Si l'on exécute sur un ordinateur avec un encodage UTF-8, la longueur en octets d'un seul caractère chinois devrait être de 3.

R prend en charge les expressions régulières au format du langage Perl :

Exemple

> gsub("[[:alpha:]]+", "$", "Two words")
[1] "$ $"

Pour plus de contenu sur les chaînes, consultez :Introduction aux chaînes de caractères du langage R。


Matrix

Le langage R fournit un type matrice pour la recherche en algèbre linéaire. Cette structure de données est très similaire aux tableaux à deux dimensions d'autres langages, mais R fournit une prise en charge au niveau du langage pour les opérations matricielles.

Tout d'abord, examinons la génération de matrices :

Exemple

> vector=c(1, 2, 3, 4, 5, 6)
> matrix(vector, 2, 3)
     [,1] [,2] [,3]
[1,]    1    3    5
[2,]    2    4    6

Le contenu d'initialisation de la matrice est transmis par un vecteur, et ensuite il doit indiquer le nombre de lignes et de colonnes de la matrice.

Les valeurs du vecteur remplissent la matrice colonne par colonne. Si vous voulez remplir par ligne, vous devez spécifier l'attribut byrow :

Exemple

> matrix(vector, 2, 3, byrow=TRUE)
     [,1] [,2] [,3]
[1,]    1    2    3
[2,]    4    5    6

Chaque valeur de la matrice est directement accessible :

Exemple

> m1 = matrix(vector, 2, 3, byrow=TRUE)
> m1[1,1] # Ligne 1, Colonne 1
[1] 1
> m1[1,3] # Ligne 1, Colonne 3
[1] 3

Dans R, chaque colonne et chaque ligne d'une matrice peut recevoir un nom ; ce processus s'effectue par lot à l'aide d'un vecteur de chaînes de caractères :

Exemple

> colnames(m1) = c("x", "y", "z")
> rownames(m1) = c("a", "b")
> m1
  x y z
a 1 2 3
b 4 5 6
> m1["a", ]
x y z
1 2 3

Les quatre opérations arithmétiques de base sur les matrices sont essentiellement les mêmes que sur les vecteurs ; elles peuvent être effectuées avec des scalaires, ou avec des matrices de même taille aux positions correspondantes.

Multiplication matricielle :

Exemple

> m1 = matrix(c(1, 2), 1, 2)
> m2 = matrix(c(3, 4), 2, 1)
> m1 %*% m2
     [,1]
[1,]   11

Matrice inverse :

Exemple

> A = matrix(c(1, 3, 2, 4), 2, 2)
> résoudre(A)
     [,1] [,2]
[1,] -2.0  1.0
[2,]  1.5 -0.5

solve()fonction est utilisée pour résoudre des équations d'algèbre linéaire ; l'utilisation de base estsolve(A,b), où,Aest la matrice des coefficients du système d'équations,ble vecteur ou la matrice dans l'équation.

apply()fonction peut traiter chaque ligne ou colonne d'une matrice comme un vecteur pour les opérations :

Exemple

> (A = matrix(c(1, 3, 2, 4), 2, 2))
     [,1] [,2]
[1,]    1    2
[2,]    3    4
> apply(A, 1, sum) # Le second paramètre est 1 pour une opération par ligne, utilisez la fonction sum()
[1] 3 7
> apply(A, 2, sum) # Le deuxième paramètre est 2 pour une opération par colonne
[1] 4 6

Pour plus de contenu sur les matrices, consultez :Matrice R。

Autres extensions